【笔记】Kotlin的运算符重载
前言
Kotlin的运算符重载学习笔记
重载一元运算符
a++和a--会改变原值- 一元运算符重载无需传递参数
1 | class 类名 { |
| 符号 | 函数 |
|---|---|
+a |
a.unaryPlus() |
-a |
a.unaryMinus() |
!a |
a.not() |
a++ |
a.inc() |
a-- |
a.dec() |
重载算数运算符
1 | class 类名 { |
| 符号 | 函数 |
|---|---|
a + b |
a.plus(b) |
a - b |
a.minus(b) |
a * b |
a.times(b) |
a / b |
a.dev(b) |
a % b |
a.rem(b) |
a .. b |
a.rangeTo(b) |
a ..< b |
a.rangeUntil(b) |
a in b |
b.contains(a) |
a !in b |
!b.contains(a) |
重载自增运算符
plus()和plusAssign()不能同时定义,其他的运算符也同理
1 | class 类名 { |
| 符号 | 函数 |
|---|---|
a += b |
a.plusAssign(b) |
a -= b |
a.minusAssign(b) |
a *= b |
a.timesAssign(b) |
a /= b |
a.devAssign(b) |
a %= b |
a.remAssign(b) |
重载比较运算符
- 所有比较运算符都是重载
compareTo()函数,不同返回值表示不同的比较运算符结果
1 | class 类名 { |
| 符号 | 函数 |
|---|---|
a > b |
a.compareTo(b) > 0 |
a < b |
a.compareTo(b) < 0 |
a >= b |
a.compareTo(b) >= 0 |
a <= b |
a.compareTo(b) <= 0 |
重载小括号
- 小括号内参数在
invoke()内定义
1 | class 类名 { |
| 符号 | 函数 |
|---|---|
a() |
a.invoke() |
a(arg) |
a.invoke(arg) |
a(arg1, arg2, ...) |
a.invoke(arg1, arg2, ...) |
重载索引访问运算符(方括号)
- 方括号内参数在
get()或set()内定义
1 | class 类名 { |
| 符号 | 函数 |
|---|---|
a[i] |
a.get(i) |
a[i, j] |
a.get(i, j) |
a[i, j, ...] |
a.get(i, j, ...) |
a[i] = b |
a.set(i, b) |
a[i, j] = b |
a.set(i, j, b) |
a[i, j, ...] = b |
a.set(i, j, ..., b) |
重载中缀函数
- 中缀函数只能传递一个参数
1 | class 类名 { |