Scala 在匿名 class 主体中使用 space 调用单参数方法

Scala call single parameter method using space in anonymous class body

在 scala 中,如何在匿名 class 的正文中使用 space 调用单个参数方法?

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;

在单独的轨道上,如果 instancethis 则可以删除。

method(argument)

但是您不能去掉括号,因为解析器试图将其解释为 instance method 但失败了。