Карта Scala, двусмысленность между кортежем и списком аргументов функции

val m = scala.collection.mutable.Map[String, Int]()
// this doesn't work
m += ("foo", 2)
// this does work
m += (("foo", 2))
// this works too
val barpair = ("bar", 3)
m += barpair

Так в чем же дело с m + = ("foo", 2) не работает? Scala выдает ошибку типа:

 error: type mismatch;
 found   : java.lang.String("foo")
 required: (String, Int)
       m += ("foo", 2)
             ^

Очевидно, Scala думает, что я пытаюсь вызвать + = с двумя аргументами вместо одного аргумента кортежа. Почему? Разве это не однозначно, поскольку я не использую m. + = ?

7
задан Dan Burton 12 October 2011 в 17:47
поделиться