- 定义
MyData
类和自定义操作符#
:
data class MyData(val a: Int, val b: Int)
// 定义自定义操作符#,这里假设自定义运算为乘积加上10
operator fun MyData.#(): Int {
return a * b + 10
}
- 设定优先级:
- 在Kotlin中,自定义操作符的优先级是由操作符的符号决定的,并且遵循一定的默认规则。例如,一元操作符优先于二元操作符。对于自定义二元操作符,Kotlin并没有直接提供显式设置优先级的语法。
- 为了让自定义操作符
#
在和其他常见操作符混合运算时遵循特定优先级,可以使用括号来明确运算顺序。例如,如果希望#
操作符优先于+
操作符,可以这样写:
val data = MyData(2, 3)
val result = (data #()) + 5 // 先计算data #(),再加上5
- 一般来说,如果想让自定义操作符具有较高优先级,可以使其符号在优先级顺序上靠前(例如
#
比+
优先级高一些,因为它在键盘上位置更靠前,这只是一种大致规律,实际以Kotlin默认规则为准),并且在混合运算中合理使用括号来保证期望的运算顺序。