Kotlin運算子過載總結
阿新 • • 發佈:2019-01-28
運算子的過載是一個十分方便的特性,它讓程式碼看起來更加的直觀,寫起來也更加的方便。在學C++的時候就十分喜歡這一語言特性。然而Java卻對這一點沒有任何的支援。現在同樣作為JVM語言的Kotlin加入了運算子過載這一語言特性。接下來讓我們看看,在Kotlin中究竟有哪些運算子可以過載呢?
一元運算子
表示式 | 對應的函式 | 說明 |
---|---|---|
+a | a.unaryPlus() | |
-a | a.unaryMinus() | 取反 |
!a | a.not() | 非運算 |
自加、自減
表示式 | 對應的函式 | 說明 |
---|---|---|
a++ | a.inc() | 自增 |
a– | a.dec() | 自減 |
二元運算子
表示式 | 對應的函式 | 說明 |
---|---|---|
a + b | a.plus(b) | 加 |
a - b | a.minus(b) | 減 |
a * b | a.times(b) | 乘 |
a / b | a.div(b) | 除 |
a % b | a.rem(b), a.mod(b) (棄用) | 取模 |
a..b | a.rangeTo(b) | 從a到b的區間 |
in運算子
表示式 | 對應的函式 | 說明 |
---|---|---|
a in b | b.contains(a) | b包含a |
a !in b | !b.contains(a) | b不包含a |
下標訪問
表示式 | 對應的函式 | 說明 |
---|---|---|
a[i] | a.get(i) | 獲取位置i的值 |
a[i, j] | a.get(i, j) | 獲取位置 i 和 j 的值 |
a[i_1, …, i_n] | a.get(i_1, …, i_n) | 獲取 i_1到i_n的值 |
a[i] = b | a.set(i, b) | 將位置 i 的值設定為 b |
a[i, j] = b | a.set(i, j, b) | 將位置 i 和 j 的值設定為 b |
a[i_1, …, i_n] = b | a.set(i_1, …, i_n, b) | 將 i_1到i_n 的值設為b |
呼叫(invoke)
表示式 | 對應的函式 | 說明 |
---|---|---|
a() | a.invoke() | 無參呼叫 |
a(i) | a.invoke(i) | 帶一個引數的呼叫 |
a(i, j) | a.invoke(i, j) | 帶兩個引數的呼叫 |
a(i_1, …, i_n) | a.invoke(i_1, …, i_n) | 帶n個引數的呼叫 |
增量運算
表示式 | 對應的函式 | 說明 |
---|---|---|
a += b | a.plusAssign(b) | |
a -= b | a.minusAssign(b) | |
a *= b | a.timesAssign(b) | |
a /= b | a.divAssign(b) | |
a %= b | a.remAssign(b), a.modAssign(b) (棄用) |
相等運算
表示式 | 對應的函式 | 說明 |
---|---|---|
a == b | a?.equals(b) ?: (b === null) | |
a != b | !(a?.equals(b) ?: (b === null)) |
比較運算
表示式 | 對應的函式 | 說明 |
---|---|---|
a > b | a.compareTo(b) > 0 | a大於b |
a < b | a.compareTo(b) < 0 | a 小於b |
a >= b | a.compareTo(b) >= 0 | a大於等於b |
a <= b | a.compareTo(b) <= 0 | a小於等於b |
使用例項
class Complex(val real:Int,val virtual:Int){
//對加號進行過載
operator fun plus(complex: Complex)=Complex(this.real+complex.real,
this.virtual+complex.virtual)
override fun toString(): String {
return "($real,$virtual)"
}
}
fun main(args: Array<String>) {
val com1=Complex(12,10)
val com2=Complex(10,21)
val result=com1 + com2
println("${com1.toString()}+${com2.toString()}=${result.toString()}")
}
執行結果:
(12,10)+(10,21)=(22,31)
要想獲取更多關於Kotlin的內容,請轉至Kotlin學習網