İşleç İşlevleri
Artı, eksi ve diğer işleçleri aşırı yükleyin
İşleç İşlevleri, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Operatör Aşırı Yükleme Nedir?
Operatör aşırı yükleme, türlerinizin + veya - gibi simgelere yanıt vermesini sağlar. operator değiştiricisini ve özel bir adı kullanarak bir işlev tanımlarsınız.
data class Point(val x: Int, val y: Int) {
operator fun plus(o: Point) = Point(x + o.x, y + o.y)
}
fun main() {
println(Point(1, 2) + Point(3, 4))
}operator Anahtar Sözcüğü
operator değiştiricisi, derleyiciye bu işlevin bir operatörü desteklediğini bildirir. Bu değiştirici olmadan a + b çağrısı çalışmaz.
data class Money(val amount: Int) {
operator fun plus(o: Money) = Money(amount + o.amount)
}
fun main() {
println(Money(5) + Money(3))
}Geleneksel Adlar
Her operatör sabit bir işlev adıyla eşleşir: + için plus, - için minus, * için times, / için div, % için rem.
data class Vec(val n: Int) {
operator fun times(k: Int) = Vec(n * k)
}
fun main() {
println(Vec(4) * 3)
}Eksi ve Çarpma
Aynı tür üzerinde birden çok operatör tanımlayabilirsiniz.
data class Point(val x: Int, val y: Int) {
operator fun minus(o: Point) = Point(x - o.x, y - o.y)
operator fun times(k: Int) = Point(x * k, y * k)
}
fun main() {
println(Point(5, 5) - Point(1, 2))
println(Point(2, 3) * 2)
}Tekli Operatörler
Tekli eksi için unaryMinus, tekli artı için unaryPlus kullanılır; not ise ! operatörünü destekler.
data class Temp(val c: Int) {
operator fun unaryMinus() = Temp(-c)
}
fun main() {
println(-Temp(10))
}Artırma ve Azaltma
inc, ++ işlemini; dec ise -- işlemini destekler. Bunlar aynı türden yeni bir değer döndürür.
data class Counter(val n: Int) {
operator fun inc() = Counter(n + 1)
}
fun main() {
var c = Counter(0)
c++
println(c.n)
}Birleşik Atama
plusAssign, değiştirilebilir alıcılar için += işlemini destekler. Yalnızca plus mevcutsa += bunun yerine değişkene yeniden atama yapar.
class Bag {
val items = mutableListOf<String>()
operator fun plusAssign(item: String) { items.add(item) }
}
fun main() {
val bag = Bag()
bag += "apple"
println(bag.items)
}Farklı Türlerle Operatörler
Parametre türünün alıcıyla eşleşmesi gerekmez. Burada bir noktayı bir tam sayıyla ölçeklemek bir nokta döndürür.
data class Size(val w: Int, val h: Int) {
operator fun times(factor: Int) = Size(w * factor, h * factor)
}
fun main() {
println(Size(2, 3) * 4)
}Uzantı İşlevleri Olarak
Operatörler, sahibi olmadığınız türler için bile uzantı olarak tanımlanabilir.
data class Point(val x: Int, val y: Int)
operator fun Point.plus(o: Point) = Point(x + o.x, y + o.y)
fun main() {
println(Point(1, 1) + Point(2, 2))
}Operatörleri Zincirleme
Aşırı yüklenmiş operatörler, normal öncelik kurallarına uyarak yerleşik operatörler gibi birlikte kullanılabilir.
data class N(val v: Int) {
operator fun plus(o: N) = N(v + o.v)
operator fun times(o: N) = N(v * o.v)
}
fun main() {
val r = N(2) + N(3) * N(4)
println(r.v)
}Dönüş Türleri Serbesttir
Bir operatör herhangi bir tür döndürebilir; ancak aynı türü döndürmek kullanımı sezgisel ve zincirlenebilir tutar.
data class Vec(val x: Int, val y: Int) {
operator fun plus(o: Vec) = Vec(x + o.x, y + o.y)
}
fun main() {
println(Vec(1, 2) + Vec(3, 4))
}Hızlı Kontrol
Operatör işlevleri hakkındaki anlayışınızı kontrol ediniz.
Özet
Operatör işlevleri hakkında şunları öğrendiniz:
- İşlevleri
operatorve geleneksel bir adla (plus,minus,times, ...) işaretleyiniz. - Tekli, artırma ve birleşik atama operatörleri desteklenir.
- Operatörler üye veya uzantı olabilir.
- Aynı türü döndürmek zincirlemeyi sezgisel tutar.
data class P(val x: Int) {
operator fun plus(o: P) = P(x + o.x)
}
fun main() {
println((P(2) + P(3)).x)
}Sıkça Sorulan Sorular
“İşleç İşlevleri” dersi ücretsiz mi?
Evet — “İşleç İşlevleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“İşleç İşlevleri” dersinde ne öğreneceğim?
Artı, eksi ve diğer işleçleri aşırı yükleyin Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“İşleç İşlevleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.