什么时候可以省略(省略)括号,圆点,大括号,=(函数)等的精确规则?
例如,
(service.findAllPresentations.get.first.votes.size) must be equalTo(2).
Run Code Online (Sandbox Code Playgroud)
service 是我的对象def findAllPresentations: Option[List[Presentation]]votes 回报 List[Vote]为什么我不能去:
(service findAllPresentations get first votes size) must be equalTo(2)
Run Code Online (Sandbox Code Playgroud)
?
编译器错误是:
"类型为Option [List [com.sharca.Presentation]]的RestServicesSpecTest.this.service.findAllPresentations不带参数"
为什么它认为我试图传递一个参数?为什么我必须为每个方法调用使用点?
为什么必须(service.findAllPresentations get first votes size)相等Too(2)导致:
"没找到:价值第一"
然而,"必须等于2"
(service.findAllPresentations.get.first.votes.size)必须等于2,即方法链是否正常? - 对象链链链接.
我查看了Scala的书籍和网站,无法找到全面的解释.
事实上,正如Rob H在Stack Overflow问题中解释的那样,我可以在Scala中省略哪些字符?,这是省略'.'的唯一有效用例.是用于"操作数运算符操作数"样式操作,而不是用于方法链接?
当我想重复执行n次时,我发现自己编写了这样的代码:
for (i <- 1 to n) { doSomething() }
Run Code Online (Sandbox Code Playgroud)
我正在寻找这样一个更短的语法:
n.times(doSomething())
Run Code Online (Sandbox Code Playgroud)
Scala中是否存在类似的内容?
编辑
我想过使用Range的foreach()方法,但是块需要采用它从未使用过的参数.
(1 to n).foreach(ignored => doSomething())
Run Code Online (Sandbox Code Playgroud)