Kotlin 操作符重载

Kotlin 操作符重载

操作符重载

官方的操作符有:
操作符重载 - Kotlin 语言中文站 (kotlincn.net)

plus

当 a + b, 相当于调用了plus方法

enum class TestEnum {  
Enum1,
Enum2,
Enum3;

operator fun plus(b: TestEnum) {
Timber.d("a: ${name}, b:${b.name}")
}
}

调用

TestEnum.Enum1 + TestEnum.Enum2

输出

a: Enum1, b:Enum2

invoke

当调用枚举时,相当于调用了invoke方法

enum class TestEnum {  
Enum1,
Enum2,
Enum3;

public operator fun invoke(params: String, block: (() -> Unit)? = null) {
when (this) {
Enum1 -> {
Timber.d("Enum1 -- $params")
block?.invoke()
}
Enum2 -> Timber.d("Enum2 -- $params")
Enum3 -> Timber.d("Enum3 -- $params")
}
}
}

在这里相当于将枚举对象变成了一个方法

测试代码

TestEnum.Enum1("我是1") {  
Timber.d("执行了内联函数")
}
TestEnum.Enum2
TestEnum.Enum3("我是3")

输出

Enum1 -- 我是1
执行了内联函数
Enum3 -- 我是3
   Vector Landscape Vectors by Vecteezy
作者

AriaLyy

发布于

2023-02-10

许可协议

CC BY-NC-SA 4.0

评论