Pomóż mi zrozumieć ten kod Scala:Zrozumienie kodu Scala (-_._ 2)
sortBy(-_._2)
Rozumiem, że pierwszy podkreślenia (_
) jest symbolem zastępczym. Rozumiem, że _2
oznacza drugiego członka krotki. Ale co oznacza minus (-
) w tym kodzie?
Pomóż mi zrozumieć ten kod Scala:Zrozumienie kodu Scala (-_._ 2)
sortBy(-_._2)
Rozumiem, że pierwszy podkreślenia (_
) jest symbolem zastępczym. Rozumiem, że _2
oznacza drugiego członka krotki. Ale co oznacza minus (-
) w tym kodzie?
Odwrócona kolejność (tj malejąco), sortowania według minus drugie pole krotki
podkreślenia jest anonimowy parametr, więc -_ jest w zasadzie taki sam jak x => -x
Some Przykłady w zwykłym Scala:
scala> List(1,2,3).sortBy(-_)
res0: List[Int] = List(3, 2, 1)
scala> List("a"->1,"b"->2, "c"->3).sortBy(-_._2)
res1: List[(String, Int)] = List((c,3), (b,2), (a,1))
scala> List(1,2,3).sortBy(x => -x)
res2: List[Int] = List(3, 2, 1)
Sortuj sortuje według ascending
aby domyślnie. Aby odwrócić kolejność, można dodać przedrostek -
(Minus), jak już wyjaśniono przez @TrustNoOne.
Więc sortBy(-_._2)
sortuje według wartości drugiego z z Tuple2
ale w odwrotnej kolejności.
Dłuższy przykład:
scala> Map("a"->1,"b"->2, "c"->3).toList.sortBy(-_._2)
res1: List[(String, Int)] = List((c,3), (b,2), (a,1))
jest taka sama jak
scala> Map("a"->1,"b"->2, "c"->3).toList sortBy { case (key,value) => - value }
res1: List[(String, Int)] = List((c,3), (b,2), (a,1))
myślę, że to ma coś wspólnego z '° \ _ (ツ) _/operator'. –
@LukasEder Zastanawiasz się, co zrobiłby ten operator. :-) – marcospereira
@marcospereira: Zwykle używa się go do przechwytywania i ignorowania wyjątku '(╯ ° □ °) ╯(┻━┻' –