Прежде всего, извиняюсь за хромой вопрос. Я читаю ` Scala для нетерпения 'религиозно и пытаюсь решить все вопросы упражнений (и делать некоторые минимальные исследования)
Фон: Вопрос упражнений идет следующим образом: - Настройте карту цен для ряда вещей, которые вы жаждете. Затем создайте вторую карту с теми же ключами и цены со скидкой 10%.
К сожалению, на данный момент большинство частей scaladoc по-прежнему загадочны для меня, но я понимаю, что функция map из Map
принимает функцию и возвращает другую карту после применения функции (я думаю?) - def map[B](f: (A) ⇒ B): HashMap[B]
. Я пробовал поиск по Google, но не смог получить много полезных результатов для map function for Map in scala
: -)
Мой вопрос:
Как было сделано в моем варианте 3, использование функции Map
для этой цели имеет смысл или я должен придерживаться варианта 2, который фактически решает мою проблему.
Код:
val gizmos:Map[String,Double]=Map("Samsung Galaxy S4 Zoom"-> 1000, "Mac Pro"-> 6000.10, "Google Glass"->2000)
//1. Normal for/yield
val discountedGizmos=(for ((k,v)<-gizmos) yield (k, v*0.9)) //Works fine
//2. Variation using mapValues
val discGizmos1=gizmos.mapValues(_*0.9) //Works fine
//3. Variation using only map function
val discGizmos2=gizmos.map((_,v) =>v*0.9) //ERROR : Wrong number of parameters: expected 1