我看过Scala可互换使用,但我不知道何时使用其中一种。
有会议吗?
例如,这些是等价的
"hello" toString
和
"hello".toString()
他们甚至可以混合
"hello".toString() length
惯例是什么?
答案 0 :(得分:10)
当方法的功能类似于运算符(+
,*
等)时,通常使用空间约定;当它的功能更像是一个方法调用时,会使用点约定。
(我知道这种解释有点模糊,但对于使用情况并没有真正的硬性规则。)
答案 1 :(得分:7)
为了扩展Yardena的评论,有一个Scala unofficial style guide。它有关于何时使用点符号以及何时删除点和括号的一些建议,并且通常提供推荐的简要理由,您可能会或可能不会同意,但至少这是一个起点。
例如,name toList
的行为可能会有所不同,具体取决于下一行的内容。
就个人而言,我会写hello.toString.length
假设所有调用都是无副作用的(因此我删除了括号)然后我必须保留点以便编译。