Về cơ bản, tôi cần có một tập hợp các giá trị từ bản đồ cho một khóa trong một danh sách nhất định (trong cùng một khóa lệnh).Lấy các giá trị từ Bản đồ danh sách các phím trong Scala
val kv = Map("k3" -> "v3", "k1" -> "v1", "k2" -> "v2")
val ks = List("k1", "k2")
Điều tốt nhất tôi có thể ứng biến là foldRight
qua ks
:
scala> (ks foldRight List[String]()) { (v, a) => kv(v) :: a }
res7: List[String] = List(v1, v2)
Có cách nào thuận tiện hơn để làm điều này trong lib chuẩn hoặc chỉ mã ngắn hơn, tốt nhất là một cái gì đó giống nhau kv getVals ks
? :)
Câu hỏi không quan trọng lắm, chỉ cần cố gắng khám phá theo phong cách tốt.
Sẽ không phải là 'foldLeft' là một lựa chọn tốt hơn ở đây? Nó sẽ là một phong cách tốt hơn tôi nghĩ, bởi vì nó được thực hiện bởi iteration trong khi foldRight được thực hiện bởi đệ quy trong List.scala. –
Câu trả lời dưới đây :) – dmitry