我正在完成Kotlin Koans Operators Overloading练习,并且打算执行类似这样的日期运算:
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()
重载程序代码。
答案 0 :(得分:2)
它的确与数学表达式一样工作。
operator overloading页面状态(强调我):
Kotlin允许我们为类型上的一组预定义操作符提供实现。这些运算符具有固定的符号表示形式(例如+或*)和固定的优先级。
语法页lists优先于运算符,其中*
在+
之上。
因此首先调用times
函数,然后将其结果作为plus
函数的参数传递。
答案 1 :(得分:0)
Kotlin旨在保持运算符的优先顺序与数学完全相同,是的。