Kotlin编码约定,中缀函数和按位运算

时间:2019-05-03 17:07:39

标签: kotlin coding-style infix-notation

使用中缀函数部分中的Kotlin coding conventions说:

  

仅当函数对两个起相似作用的对象起作用时,才将其声明为中缀。很好的例子:andtozip。错误的例子:add

     

如果方法使接收方对象发生突变,则不要将其声明为中缀。

我的第一个问题是:add用什么方式不好?

然后在对basic types的讨论中,它解释了按位运算符是“可以以infix形式调用的命名函数”,并给出了此示例(作为较大表达式的一部分):

(1 shl 2)

在我看来,三个Kotlin移位操作(shlshrushr)违反了编码约定。左右操作数根本不扮演相似的角色。左操作数是原始位模式,右操作数是该位模式应移多远。

我在这里想念东西吗?

1 个答案:

答案 0 :(得分:3)

add(让我们选择add接口的MutableList)是一个不好的例子,因为它违反了规则:

  

如果方法使接收方对象发生突变,则不要将其声明为中缀。

add更改原始列表并返回Boolean


在Kotlin中,没有用于位运算的专用运算符。因此,为了方便调用它们,将它们创建为中缀函数。

另一方面,整数加法有一个专用的运算符+。因此,即使plus中的Int是一个中缀函数,也没有必要。