Kotlin编码约定,插图功能和位操作



kotlin编码约定,在使用infix functions 的部分中,说:

仅当功能在两个扮演相似角色的对象上起作用时,才将功能声明为infix。很好的例子:andtozip。坏示例:add

如果将方法变为接收器对象,则不要将方法声明为infix。

我的第一个问题是:add是一个不好的例子?

然后,在对基本类型的讨论中,它解释说,位运算符是"可以以infix形式称为命名的函数",并且给出了此示例(作为较大表达式的一部分(:

(1 shl 2)

对我来说,似乎三个Kotlin换档操作(shlshrushr(违反了编码约定。左右操作数根本没有扮演类似的角色。左操作数是原始的位模式,右操作数是要移动位模式的距离。

我在这里错过了什么吗?

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

如果将方法变为接收器对象,则不要将方法声明为infix。

add突变原始列表并返回Boolean


在Kotlin中,没有用于位操作的专用操作员。因此,为了方便地称它们为infix函数。

另一方面,整数添加具有专用的操作员+。这就是为什么不需要将plus(Int的(功能变为fround的原因,即使它将是合适的候选人。

最新更新