在scala中,如何使用匿名类主体中的空间来调用单参数方法?
下面的add "Answer3"
不工作
trait Question {
def add(answer:String):Unit = {
println("Received the answer=" + answer)
}
}
object Test {
val question:Question = new Question {
this add "Answer1" // working
add("Answer2") // working
add "Answer3" // NOT working, why? -> error: ';' expected but string literal found.
}
}
您正试图混合使用两种不同且相互冲突的方便语法选项。
instance.method(argument)
可以表示为。。。
instance method argument
并且,如果method()
不带参数,那么它也可以用空格表示,但解析器需要一些帮助。
instance method;
在单独的轨道上,如果instance
是this
,则可以丢弃。
method(argument)
但是不能去掉括号,因为解析器试图将其解释为instance method
,但失败了。