0Pricing
Kotlin Academy · Ders

İş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 operator ve 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.

Bu kursun tüm dersleri

  1. İşleç İşlevleri
  2. Karşılaştırma İşleçleri
  3. Dizinleme ve Çağırma
  4. En İyi Uygulamalar
← Kotlin Academy Sayfasına Dön