2012-03-19 2 views
13

Wyobraźmy sobie następującą niezmienny Mapa:Scala: uzyskanie klucza (i wartość) elementu Map.head

val foo = Map((10,"ten"), (100,"one hundred")) 

Chcę dostać klucz od pierwszego elementu.

foo.head otrzymuje pierwszy element. Ale co dalej?

Chcę również wartość tego elementu, to znaczy „dziesięć”

+8

'Map's nie są sortowane. Tak więc "pierwszy" nie zawsze jest taki, jak myślisz. Miej to na uwadze :-) – leedm777

+0

Dzięki, Dave, będę :) – Blackbird

Odpowiedz

23

Ustaw parę klucz/wartość:
val (key, value) = foo.head

+0

Czy istnieje sposób na zdobycie par 2 (klucz, wartość) lub 3 najlepszych zamiast tylko pierwszych. – Ajay

17

Map.head zwraca krotki, dzięki czemu można używać _1 i _2 dostać swój indeks i wartość.

scala> val foo = Map((10,"ten"), (100,"one hundred")) 
foo: scala.collection.immutable.Map[Int,java.lang.String] = Map(10 -> ten, 100 - 
> one hundred) 

scala> val hd=foo.head 
hd: (Int, java.lang.String) = (10,ten) 

scala> hd._1 
res0: Int = 10 

scala> hd._2 
res1: java.lang.String = ten 
+0

Dzięki za szczegółową odpowiedź. Rozwiązanie IODEV wygląda bardzo ładnie, muszę powiedzieć. – Blackbird