问题描述
我正在完成练习,并且我打算实现这样的日期算术:
today + YEAR * 2 + WEEK * 3 + DAY * 5
我的问题是,这会像首先执行乘法的常规数学方程一样运行吗?
today + (YEAR * 2) + WEEK * 3 + (DAY * 5)
today.add(YEAR * 2).add(WEEK * 3).add(DAY * 5)
如果是这样,我假设我应该在练习中首先执行times()
运算符重载程序,然后编写add()
重载程序代码。
1楼
它确实会像数学表达式一样工作。
页面状态(强调我的):
Kotlin 允许我们为我们的类型提供一组预定义的运算符的实现。 这些运算符具有固定的符号表示(如 + 或 *)和固定的优先级。
语法页面 了运算符的优先级,其中*
高于+
。
所以首先调用times
函数,其结果作为plus
函数的参数传递。
2楼
Kotlin 旨在保持运算符的优先顺序与数学完全相同,是的。