不确定我应该在这里还是在Programmers上问这个问题,但无论如何
在 Scala 中,可以使用中缀语法编写方法调用,即省略点和括号。
例如,您可以这样做:
lst foreach println // equivalent to lst.foreach(println)
自然地,人们会假设它lst map _.toString
会被评估为lst.map(_.toString)
,这相当于lst.map(x$1 => x$1.toString)
但是lst map _.toString
放入 repl 会产生一个令人惊讶的结果,它被评估为((x$1) => sList.map(x$1.toString))
导致方法调用发生故障。
那为什么呢?为什么写作时不再适用简单的a.f(b)
等价规则?a f b
a f _.b