何时使用""(空格)以及何时使用.(点)在Scala中调用方法时?

Osc*_*Ryz 28 syntax scala language-design

我看过Scala可以互换使用,但我不知道何时使用其中一个.

有会议吗?

例如,这些是等价的

"hello" toString 
Run Code Online (Sandbox Code Playgroud)

"hello".toString()
Run Code Online (Sandbox Code Playgroud)

他们甚至可以混在一起

"hello".toString() length 
Run Code Online (Sandbox Code Playgroud)

惯例是什么?

mip*_*adi 10

该方法的功能类似于操作者(当空间惯例通常使用+,*等); 当它的功能更像是方法调用时,使用点约定.

(我知道这种解释有点含糊,但实际上并没有一条硬性规则可供使用.)


huy*_*hjl 7

为了扩展Yardena的评论,有一个Scala 非官方风格指南.它有一些关于何时使用点符号以及何时删除点和括号的建议,并且通常提供推荐的简要理由,您可能会或可能不会同意,但至少这是一个起点.

例如,name toList根据下一行的内容,可能会有不同的行为.

就个人而言,我会hello.toString.length假设所有调用都是无副作用的(因此我删除了括号),然后我必须保留点以便编译.