Kotlin Operatörü Aşırı Yüklemesi (Örneklerle)

İçindekiler

Bu makalede, örnekler yardımıyla operatör aşırı yüklemesi (nesneler gibi kullanıcı tanımlı türler için operatörün nasıl çalıştığını tanımlayın) hakkında bilgi edineceksiniz.

Kotlin'de operatörü kullandığınızda, buna karşılık gelen üye işlevi çağrılır. Örneğin, ifade kaputun altına a+bdönüşüyor a.plus(b).

 fun main(args: Array) ( val a = 5 val b = 10 print(a.plus(b)) // print(a+b) )

Programı çalıştırdığınızda, çıktı:

 15

Aslında, plus()işlev çeşitli Kotlin temel türleri ve String.

 // + temel tipler için operatör fun plus (diğer: Byte): Int operatör fun plus (diğer: Short): Int operatör fun plus (diğer: Int): Int operatör eğlencesi artı (diğer: Uzun): Uzun operatör eğlencesi artı (diğer: Float): Float operatörü fun plus (other: Double): Double // string birleştirme operatörü için fun String? .plus (diğer: Herhangi biri?): String 

Operatörün, karşılık gelen işlevini aşırı yükleyerek nesneler için nasıl çalıştığını da tanımlayabilirsiniz. Örneğin, fonksiyon +aşırı yükleyerek operatörün nesneler için nasıl çalıştığını tanımlamanız gerekir plus().

Örnek: Aşırı Yükleme + Operatör

 fun main(args: Array) ( val p1 = Point(3, -8) val p2 = Point(2, 9) var sum = Point() sum = p1 + p2 println("sum = ($(sum.x), $(sum.y))") ) class Point(val x: Int = 0, val y: Int = 10) ( // overloading plus function operator fun plus(p: Point) : Point ( return Point(x + p.x, y + p.y) ) )

Programı çalıştırdığınızda, çıktı:

 toplam = (5, 1)

Burada, derleyiciye operatörün aşırı yüklendiğini bildirmek için plus()işlev operatoranahtar sözcükle işaretlenmiştir +.

İfade kaputun altına p1 + p2dönüştürülür p1.plus(p2).

Örnek: - Operatör Aşırı Yüklemesi

Bu örnekte, --operatörü aşırı yüklemeyi öğreneceksiniz . İfade kaputun altına --adönüştürülür a.dec().

dec()Üye işlev herhangi bir bağımsız değişken almaz.

 fun main(args: Array) ( var point = Point(3, -8) --point println("point = ($(point.x), $(point.y))") ) class Point(var x: Int = 0, var y: Int = 10) ( operator fun dec() = Point(--x, --y) )

Programı çalıştırdığınızda, çıktı:

 nokta = (2, -9) 

Bunu hatırla,

 operatör eğlenceli dec () = Nokta (- x, --y)

eşdeğerdir

 operatör fun dec (): Nokta (dönüş Noktası (- x, --y))

Birkaç Önemli Nokta

1. Operatörleri aşırı yüklediğinizde, operatörün orijinal ruhunu korumaya çalışmalısınız. Örneğin,

 fun main(args: Array) ( val p1 = Point(3, -8) val p2 = Point(2, 9) var sum = Point() sum = p1 + p2 println("sum = ($(sum.x), $(sum.y))") ) class Point(val x: Int = 0, val y: Int = 10) ( // overloading plus function operator fun plus(p: Point) = Point(x - p.x, y - p.y) )

Yukarıdaki program teknik olarak doğru olsa da +, programı kafa karıştırıcı yapan iki nesnenin karşılık gelen özelliklerini çıkarmak için operatörü kullandık .

2. Scala gibi dillerden farklı olarak, Kotlin'de yalnızca belirli bir operatör kümesi aşırı yüklenebilir. Kotlin'de aşırı yüklenebilecek operatörler ve bunlara karşılık gelen üye işlevleri hakkında bilgi edinmek için sayfayı ziyaret edin.

Ilginç makaleler...