我正在通过 artima“ Scala 编程”一书了解 Scala。
在介绍Map
特征时,作者竭尽全力将->
语法描述为一种可以应用于任何类型以获取元组的方法。
事实上:
scala> (2->"two")
res1: (Int, String) = (2,two)
scala> (2,"two")
res2: (Int, String) = (2,two)
scala> (2->"two") == (2, "two")
res3: Boolean = true
但这些并不等同:
scala> Map(1->"one") + (2->"two")
res4: scala.collection.immutable.Map[Int,String] = Map(1 -> one, 2 -> two)
scala> Map(1->"one") + (2, "two")
<console>:8: error: type mismatch;
found : Int(2)
required: (Int, ?)
Map(1->"one") + (2, "two")
为什么会这样,因为我的第一个测试似乎表明两种“对”语法都构建了一个元组?
问候。