使用中缀函数部分中的Kotlin coding conventions说:
仅当函数对两个起相似作用的对象起作用时,才将其声明为中缀。很好的例子:
and
,to
,zip
。错误的例子:add
。如果方法使接收方对象发生突变,则不要将其声明为中缀。
我的第一个问题是:add
用什么方式不好?
然后在对basic types的讨论中,它解释了按位运算符是“可以以infix形式调用的命名函数”,并给出了此示例(作为较大表达式的一部分):
(1 shl 2)
在我看来,三个Kotlin移位操作(shl
,shr
和ushr
)违反了编码约定。左右操作数根本不扮演相似的角色。左操作数是原始位模式,右操作数是该位模式应移多远。
我在这里想念东西吗?
答案 0 :(得分:3)
add
(让我们选择add
接口的MutableList
)是一个不好的例子,因为它违反了规则:
如果方法使接收方对象发生突变,则不要将其声明为中缀。
add
更改原始列表并返回Boolean
。
在Kotlin中,没有用于位运算的专用运算符。因此,为了方便调用它们,将它们创建为中缀函数。
另一方面,整数加法有一个专用的运算符+
。因此,即使plus
中的Int
是一个中缀函数,也没有必要。