İlk önce, sorun sorgusu için özür dileriz. Ben Sabırsız' dini için `Scala okuma ve tüm egzersiz soruları çözmeye çalıştığı (ve bazı minimal bir araştırma yapıyor)`map` işlevini kullanma Map in Scala
Arkaplan am: egzersiz soru şöyle - Kurulum bir dizi fiyatlarının bir harita Sevdiğin gizemler. Daha sonra aynı anahtarlar ve fiyatları% 10 indirim ile ikinci bir harita oluşturun.
Maalesef bu noktada, scaladoc çoğu parçaları hala bana şifreli ama ben Map
haritası işlevi bir işlevi alır ve bir işlev (sanırım?) Uygulandıktan sonra başka bir harita döndürür anlıyoruz - def map[B](f: (A) ⇒ B): HashMap[B]
. Ben googling çalıştı ama map function for Map in scala
:-) Benim Soru pek faydalı sonuçlar alamadım: benim 3. varyasyon teşebbüs gibi, herhangi bir anlam ifade bu amaçla
map
işlevini kullanarak mı ya da varyasyon 2 ile sopa hangi aslında benim problemimi çözüyor.
Kodu: Bu durumda
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
Vay. Bu mükemmel bir anlam ifade ediyor. Açıklamak için zaman ayırdığınız için çok teşekkürler. –
'mapValues', mevcut harita üzerinde bir görünüm oluştururken, 'map', yepyeni bir harita oluşturduğuna dikkat çekiyor. – Daenyth