Я хочу создать карту по имени, содержащую количество вещей с этим именем.У меня есть список вещей с именем, который может содержать более одного предмета с одинаковым именем.Закодированный таким образом, я получаю сообщение об ошибке "несоответствие типов; найдено: Требуется строка: (String, Int)":
//variation 0, produces error
(Map[String, Int]() /: entries)((r, c) => { r + (c.name, if (r.contains(c.name)) (c.name) + 1 else 1) })
Это сбивает меня с толку, поскольку я (a, b) был Tuple2 и поэтому подходитиспользовать с картой добавить.Любой из следующих вариантов работает должным образом:
//variation 1, works
(Map[String, Int]() /: entries)((r, c) => { r + Tuple2(c.name, if (r.contains(c.name)) (c.name) + 1 else 1) })
//variation 2, works
(Map[String, Int]() /: entries)((r, c) => {
val e = (c.name, if (r.contains(c.name)) (c.name) + 1 else 1) })
r + e
Мне неясно, почему возникла проблема с моей первой версией;может кто-нибудь посоветовать.Я использую Scala-IDE 2.0.0 beta 2 для редактирования исходного кода;ошибка из окна «Проблемы затмения».