我的这段代码有问题,编译器告诉我一个错误
for (key <- keys) type mismatch, found: Unit, required: Seq[String]
.
我以错误的方式获取 map 键?谢谢
def sorted(): Seq[String] = {
var sorting: Seq[String] = Seq()
var keys = db.keys.toSeq.sortWith(_ < _)
for (key <- keys) {
var names = db(key).sortWith(_ < _)
for (name <- names) {
sorting = sorting :+ name
}
}
最佳答案
我认为以函数式方式执行此操作可以大大简化此操作:
def sorted(): Seq[String] =
for{
key <- db.keys.toSeq.sorted
value <- db(key).sorted
} yield value
获取已排序的
Seq
中的键。获取已排序的
Seq
中的值。
与 for-comprehension
一样,这将 flatMap
这些 Seqs
。
结果:val db = Map("one"-> Seq("eins", "uno"), "two"-> Seq("zwei", "due"))
是:Vector(eins, uno, due, zwei)
如果您有什么不明白的地方,请告诉我。
关于scala - 从scala中的 map 获取 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57778621/