' - >'是运营商吗?它返回了什么?

Lai*_*uan 1 scala

在Scala中,我可以这样构建Map:

val map = Map(1 -> "one", 2 -> "two", 3 -> "three")
Run Code Online (Sandbox Code Playgroud)

但是它做了什么?应该评估参数,因此1 -> "one"有一个值.那是什么?

我也注意到这个表达式返回true:

scala> 1 -> "one" == (1, "one")
res1: Boolean = true
Run Code Online (Sandbox Code Playgroud)

那有什么区别?

Fel*_*lix 6

它来自班级ArrowAssoc(http://www.scala-lang.org/api/current/scala/Predef$$ArrowAssoc.html).查看包含所有预先导入的方法的对象Predef(http://www.scala-lang.org/api/current/scala/Predef$.html).在那里你应该找到any2ArrowAssoc[A](x: A): ArrowAssoc[A]隐式转换的方法->,允许在任何东西上调用方法.

要详细说明这个答案,这意味着您的示例中隐含了以下代码:

scala> 'a' -> 1 == (any2ArrowAssoc('a').->(1))
res0: Boolean = true
Run Code Online (Sandbox Code Playgroud)