MST

星途 面试题库

面试题:Kotlin中自定义操作符及其优先级设定

在Kotlin中定义一个自定义操作符`#`,用于计算一个自定义类`MyData`对象中两个数值成员变量的某种自定义运算结果(例如乘积加上某个固定值)。并且说明如何为这个自定义操作符设定优先级,使得它在和其他常见操作符混合运算时遵循你设定的优先级规则。
20.6万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试
  1. 定义MyData类和自定义操作符#
data class MyData(val a: Int, val b: Int)

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