まずは、不明な質問に対してお詫び申し上げます。私は宗教的にせっかち」の `スカラ座を読み、すべての演習問題を解決しよう(といくつかの最低限の探査を行っている)ScalaでMap上で `map`関数を使う
背景います: 運動の質問は以下のようになります - セットアップの数の価格のマップあなたが欲するギズモです。その後、同じキーと価格で10%割引で2番目のマップを作成します。
残念ながら、この時点では、scaladocの大部分は、まだ私には謎めいているが、私はMap
のマップ機能は、機能を取り、機能(私は推測?)を適用した後に別のマップを返すことを理解 - def map[B](f: (A) ⇒ B): HashMap[B]
を。私はグーグルで試みたが、map function for Map in scala
:-)私の質問のために非常に有用な結果を得るcouldntの: を私のバリエーション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
うわー。それは完璧な意味合いがあります。はっきりと説明する時間を取ってくれてありがとう。 –
'mapValues'は既存のマップ上にビューを作成するのに対して、' map'は新しいマップ全体を作成することに注意してください。 – Daenyth