是的,Kotlin 允许你自定义运算符的行为。你可以通过为操作数类型实现特定的接口或使用扩展函数来实现运算符重载。
以下是两种自定义运算符行为的示例:
- 实现接口:
interface Addable<T> {
operator fun plus(other: T): T
}
class MyNumber(val value: Int) : Addable<MyNumber> {
override fun plus(other: MyNumber): MyNumber {
return MyNumber(value + other.value)
}
}
fun main() {
val a = MyNumber(1)
val b = MyNumber(2)
val c = a + b // 使用自定义的 add 运算符
println(c.value) // 输出 3
}
- 使用扩展函数:
fun Int.myAdd(other: Int): Int {
return this + other
}
fun main() {
val a = 1
val b = 2
val c = a myAdd b // 使用自定义的 myAdd 扩展函数
println(c) // 输出 3
}
在这两个示例中,我们分别为 MyNumber
类型和 Int
类型自定义了加法运算符的行为。你可以根据需要为其他类型和操作符实现类似的自定义行为。