Kotlin 运算符重载
在Kotlin中,常用的运算符重载函数名如下:
1.算术操作符:
加法:plus
减法:minus
乘法:times
除法:div
取模:rem 或 mod
整数除法:floorDiv
求幂:pow
自增:inc
自减:dec
2.比较操作符:
等于:equals 或 ==
不等于:notEquals 或 !=
大于:greater 或 >
小于:less 或 <
大于等于:greaterEquals 或 >=
小于等于:lessEquals 或 <=
3.索引操作符:
获取元素:get
设置元素:set
4.调用操作符:
调用:invoke
5.包含操作符:
包含:contains
6.类型转换操作符:
类型转换:as
7.赋值操作符:
赋值:set
8.一元操作符:
正号:unaryPlus
负号:unaryMinus
逻辑非:not
以上是一些常用的运算符重载函数名。需要注意的是,这些函数名是Kotlin语言规范的一部分,开发者应该遵循这些规则来定义运算符的行为。
下先举个简单的例子:
- 算术操作符
我们可以为自定义类定义加法、减法、乘法和除法操作符的行为。
data class Point(val x: Int, val y: Int) {
operator fun plus(other: Point): Point {
return Point(x + other.x, y + other.y)
}
operator fun minus(other: Point): Point {
return Point(x - other.x, y - other.y)
}
operator fun times(other: Int): Point {
return Point(x * other, y * other)
}
operator fun div(other: Int): Point {
return Point(x / other, y / other)
}
}
fun main() {
val p1 = Point(1, 2)
val p2 = Point(3, 4)
val p3 = p1 + p2 // 相当于 p1.plus(p2)
val p4 = p1 - p2 // 相当于 p1.minus(p2)
val p5 = p1 * 2 // 相当于 p1.times(2)
val p6 = p1 / 2 // 相当于 p1.div(2)
println(p3) // 输出: Point(x=4, y=6)
println(p4) // 输出: Point(x=-2, y=-2)
println(p5) // 输出: Point(x=2, y=4)
println(p6) // 输出: Point(x=0, y=1)
}
2.索引操作符
我们可以为自定义类定义索引操作符[]的行为。
class MyList<T>(vararg elements: T) {
private val list = elements.toMutableList()
operator fun get(index: Int): T {
return list[index]
}
operator fun set(index: Int, value: T) {
list[index] = value
}
}
fun main() {
val myList = MyList(1, 2, 3)
println(myList[1]) // 输出: 2
myList[1] = 4
println(myList[1]) // 输出: 4
}
- 调用操作符
我们可以为自定义类定义调用操作符()的行为。
class Greeter(val name: String) {
operator fun invoke(greeting: String): String {
return "$greeting, $name!"
}
}
fun main() {
val greeter = Greeter("Twg")
println(greeter("Hello")) // 输出: Hello, Twg!
}
4.包含操作符
我们可以为自定义类定义包含操作符in和!in的行为。
class Range(val start: Int, val end: Int) {
operator fun contains(value: Int): Boolean {
return value in start..end
}
}
fun main() {
val range = Range(1, 10)
println(8 in range) // 输出: true
println(18 !in range) // 输出: true
}
以上就是在Kotlin中运算符重载的一些示例。通过运算符重载,我们可以使代码更加简洁和易读。