操作符重载
官方的操作符有:
操作符重载 - 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
|
输出
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