有如何将Maped集合中的IndexedSeq映射到Scala中不同类型的集合?
val a: IndexedSeq[String] = Array("one", "two", "three")
def f(s: String): Int = s match {
case "one" => 1; case "two" => 2; case "three" => 3;
case _ => throw new IllegalArgumentException
}
我最好如何获得
val m: Map[String, Int] = Map("one" -> 1, "two" -> 2, "three" -> 3)
假设我不介意引入代理功能返回键 - 值对元组,如果这将使一个更好的解决方案。 PS:我实际上对如何将一个集合映射到不同所需类型的集合感兴趣,但是选择了这个例子作为特例来说明和提出更具体的问题。这意味着特定的案例(IndexedSeq到Map)解决方案是可以接受的,但更多的通用评论是受欢迎的。现在我使用foreach
填充这种情况下的可变映射缓冲区,但是这似乎与真正的Scala功能方式相差太远。我发现自己使用了太多的foreach
和可变缓冲区,这让我感到紧张,这就是为什么我会问所有关于映射的问题。
这很奇怪:如果我没有明确指定'val result'类型,它会得到'IndexedSeq [(String,Int)]',但如果我这样做 - 它会按需要工作。我将研究关于bereakOut,谢谢你链接到这个问题。 – Ivan 2012-03-15 23:42:28