【发布时间】:2016-11-26 08:17:22
【问题描述】:
以下代码有效:
val ls = Seq("a", "b", "b", "c")
def strEq(a: String, b: String) = a == b
val detectChange = (ls zip ls.tail).map((strEq _). tupled)
是否可以直接使用标准运算符而不是创建 strEq,类似于以下内容?
val detectChange = (ls zip ls.tail).map(== _. tupled)
【问题讨论】:
-
您的代码无法在 scala 2.11.8 上编译:
')' expected but '.' found. [error] val detectChange = (ls zip ls.tail).map(strEq _. tupled). -
你需要删除
strEq之后的.才能编译。 -
我看到的最接近内置的东西(有点冗长)是
(ls zip ls.tail).map { case (x,y) => x == y } -
@YuvalItzchakov 那将使用后缀表示法。我改为用括号括起来来修复它。
-
或者你可以让你的
strEq像def strEq(ab: (String, String)) = ab._1 == ab._2然后val detectChange = bla map strEq但这很明显...... xD
标签: scala function operators tuples