Я получаю вкус Скалы через artima «Programming in 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")
Почему это так, так как мои первые тесты, кажется, показывают, что оба «пара» Синтаксисы построить кортеж?
С уважением.
Фактически они эквивалентны: (2 -> «two») является аналогом ((2, «два»)) и «Карта (1 ->« один ») + ((2,« два »)) 'работает отлично. 'Map (1 ->« one ») + 2 ->« two »' не работает с той же ошибкой, что и «Карта (1 ->« один ») + (2,« два »)' –
Не могли бы вы повторить это как ответ, чтобы я мог его принять? :) – oparisy
вы можете принять ответ Rex, хотя будет полезно указать, почему «карта + 2 ->« два »' не работает (к сожалению, я не знаю). –