我有下一个代码:
vmware workstation
我想按照http://docs.scala-lang.org/style/method-invocation.html的建议编写,所以以中缀形式:
List.tabulate(n, n)(_ * _).zipWithIndex.map{case (list, index) => index :: list}
但这会停止编译。为什么?当我可以使用中缀时,有什么更好的解释吗?我什么时候可以,而不是我给的链接?它看起来不像是解释了不同Arity的链式调用,就像我正在做的那样
答案 0 :(得分:1)
两个zipWithIndex
都不接受参数,因此您无法将其写入中缀位置。尝试:
val n = 10
val list = List.tabulate(n, n)(_ * _).zipWithIndex map { case (list, index) => index :: list }
但是,如果你的意思是后缀,那就像彼得提到的那样弃用并且气馁。如果你坚持,你必须import scala.language.postfixOps
。
即便如此,你也无法将后缀与中缀表示法结合起来。
import scala.language.postfixOps
val n = 10
val list = List.tabulate(n, n)(_ * _) zipWithIndex
val result = list map { case (list, index) => index :: list }