Giúp tôi hiểu mã Scala này:Hiểu đang Scala: (-_._ 2)
sortBy(-_._2)
Tôi hiểu rằng gạch đầu tiên (_
) là một giữ chỗ. Tôi hiểu rằng _2
có nghĩa là thành viên thứ hai của Tuple. Nhưng điểm số trừ (-
) cho mã này là gì?
Giúp tôi hiểu mã Scala này:Hiểu đang Scala: (-_._ 2)
sortBy(-_._2)
Tôi hiểu rằng gạch đầu tiên (_
) là một giữ chỗ. Tôi hiểu rằng _2
có nghĩa là thành viên thứ hai của Tuple. Nhưng điểm số trừ (-
) cho mã này là gì?
Xếp theo thứ tự (tức là giảm dần), bạn sắp xếp theo trừ trường thứ hai của tuple
Các dấu gạch dưới là một tham số ẩn danh, vì vậy -_ được về cơ bản giống như x => -x
Một số ví dụ trong scala đồng bằng:
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)
Sắp xếp theo loại theo thứ tự ascending
làm đơn đặt hàng mặc định. Để đảo ngược thứ tự, -
(Trừ) có thể được thêm vào trước, như đã được giải thích bởi @TrustNoOne.
Vì vậy, sortBy(-_._2)
sắp xếp theo giá trị thứ hai của số Tuple2
nhưng theo thứ tự ngược lại.
Một ví dụ nữa:
scala> Map("a"->1,"b"->2, "c"->3).toList.sortBy(-_._2)
res1: List[(String, Int)] = List((c,3), (b,2), (a,1))
cũng giống như
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))
Tôi nghĩ rằng nó có cái gì để làm với '¯ \ _ (ツ) _/¯' điều hành. –
@LukasEder Tò mò về những gì nhà điều hành này sẽ làm. :-) – marcospereira
@marcospereira: Nó thường được sử dụng để bắt và bỏ qua ngoại lệ '(□ ° □ °) ╯︵ ┻━┻' –