2016-03-31 35 views
1

Bir haritayı düzleştirmeye çalışıyorum. 1) neden çalıştığını bilmiyorum ama 2) değil.Neden bu _._ 1 kısa çalışma çalışmıyor?

scala> val m = Map(1->2, 2->4, 3->6) 
    m: scala.collection.immutable.Map[Int,Int] = Map(1 -> 2, 2 -> 4, 3 -> 6) 

1)

scala> m.flatMap(e => List(e._1, e._2) 
    |) 
res11: scala.collection.immutable.Iterable[Int] = List(1, 2, 2, 4, 3, 6) 

2)

scala> m.flatMap(List(_._1,_._2)) 
    <console>:12: error: missing parameter type for expanded function ((x$1) => x$1._1) 
      m.flatMap(List(_._1,_._2)) 
         ^
    < 

cevap

7

List(_._1, _._2)List(x => x._1, x => x._2) eşdeğerdir. Bu, _ kullanarak her bir ifadenin kendi lambda ve her iki lambda da List'a argümanlar olarak verilmiştir.

Bir _ kısayol kullanarak istediğini elde etmek için bir yolu yoktur, bu yüzden Seçenek 2'yi kullanmak gerekecektir böylece" seçenek seçme 1.

+0

kullanmak gerekecektir' Eğer seçenek 1? – johnsam

+0

@johnsam ifade ediyordu Evet, – sepp2k

+3

Veya seçenek 3: 'm.flatMap {case (k, v) => Liste (k, v)}' – jwvh