在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)
那有什么区别?
它来自班级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)