作者:Antonio Leiva时间:Mar 21, 2017原文链接:https://antonioleiva.com/operator-overload-kotlin/ 就像其他每种语言一样,在Kotlin中,已经预定义了一些操作符执行一定的操作。 最典型的是加(+) ...
作者:Antonio Leiva
时间:Mar 21, 2017
原文链接:https://antonioleiva.com/operator-overload-kotlin/
就像其他每种语言一样,在Kotlin中,已经预定义了一些操作符执行一定的操作。
最典型的是加(+),减(-),乘(*),除(/),而且还有很多。
类似Java这样的一些语言,这些操作符被限制在一些特定的数量类型上,且没有方法让其他类型数据使用这些操作符。
还有在像Scala这样的其他语言中,由于函数名称可接受任何符号,我们就可创造能用于任何数据类型操作符。
Kotlin的这种方案:有一些预定义的操作符,而我们能够为任意数据类型重载它们。
Kotlin的操作符重载
如我们讨论的,Kotlin能够重载一些操作符,在我们的类中实现其相应的函数。这些函数前必须加上保留字operator
。
这些基本操作符如下:
一元操作符
+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.mod(b) |
a..b | a.rangeTo(b) |
a in b | b.contains(a) |
a !in b | !b.contains(a) |
a += b | a.plusAssign(b) |
a -= b | a.minusAssign(b) |
a *= b | a.timesAssign(b) |
a /= b | a.divAssign(b) |
a %= b | a.modAssign(b) |
数组类型操作符
a[i] | a.get(i) |
a[i, j] | a.get(i, j) |
a[i_1, …, i_n] | a.get(i_1, …, i_n) |
a[i] = b | a.set(i, b) |
a[i, j] = b | a.set(i, j, b) |
a[i_1, …, i_n] = b | a.set(i_1, …, i_n, b) |
等式(equals)操作符
a == b | a?.equals(b) ?: b === null |
a != b | !(a?.equals(b) ?: b === null) |
由于
equals
操作使用更复杂地转换做正确性检查,并且期望函数准确说明而不仅仅是为它的一个特殊名称,而稍有一点不同略有不同。
1 fun equals(other: Any?): Boolean
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:Kotlin操作符重载:把标准操作加入到任何类中(KAD 17)
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。