为什么scala中的arity-1语法不能为自调用编译?

时间:2013-03-07 01:04:39

标签: scala

object Arity1 extends App{
    def say(something:String) = println(something)

    say ("this works")
    this say "this too"
    say "this shouldn't?"
}

最后一句话是有道理的,不编译的原因是什么?

1 个答案:

答案 0 :(得分:2)

因为有一些叫做postfix方法的调用。

写作时

def x(): Int = 1
x toString

实际上是以下内容:

def x(): Int = 1
x.toString()

正如您所看到的,它与您的代码示例存在冲突,其中Scala正在寻找方法名称,但您提供的是String,因此Scala会抱怨这一点。