Я нахожу существующий ответ отвлекающим. Он не объясняет, в чем проблема, просто потому, что скобки интерпретируются как скобки параметров, а не скобки. Посмотрите здесь:
scala> list+=(5,"hello")
<console>:10: error: type mismatch;
found : Int(5)
required: abc
(which expands to) (Int, String)
list+=(5,"hello")
^
<console>:10: error: type mismatch;
found : String("hello")
required: abc
(which expands to) (Int, String)
list+=(5,"hello")
^
scala> list+=(5 -> "hello")
res1: list.type = Set((5,hello))
scala> list+=((5,"hello"))
res2: list.type = Set((5,hello))
Первый раз терпит неудачу, потому что вы вызываете метод +=
с двумя параметрами, вместо того, чтобы называть его с одним параметром, который является кортеж.
Второй раз работает, потому что я использовал ->
для обозначения кортежа.
В третий раз работает, потому что я помещаю дополнительные кортежи для обозначения кортежа.
Это говорит о том, что вызов Set
a list
является плохим, потому что люди склонны думать, что это List
.
Спасибо, что я искал, я продолжал получать ошибки, как в вашем примере, и не знал, как избавиться от них. –