我有一个示例#include <sstream>
,如下所示
List
如何使用List[(String, Object)]
循环显示此列表?
我想做点什么
for
但是对于上面的2d列表。 for(str <- strlist)
的占位符是什么?
答案 0 :(得分:5)
在这里,
scala> val fruits: List[(Int, String)] = List((1, "apple"), (2, "orange"))
fruits: List[(Int, String)] = List((1,apple), (2,orange))
scala>
scala> fruits.foreach {
| case (id, name) => {
| println(s"$id is $name")
| }
| }
1 is apple
2 is orange
注意:期望的类型需要一个单参数函数接受一个2元组。
考虑匹配匿名函数{ case (id, name) => ... }
易于复制代码:
val fruits: List[(Int, String)] = List((1, "apple"), (2, "orange"))
fruits.foreach {
case (id, name) => {
println(s"$id is $name")
}
}
答案 1 :(得分:2)
使用for
,您可以提取元组的元素
for ( (s,o) <- list ) yield f(s,o)
答案 2 :(得分:1)
如果您只想获取字符串,可以映射到您的元组列表,如下所示:
// Just some example object
case class MyObj(i: Int = 0)
// Create a list of tuples like you have
val tuples = Seq(("a", new MyObj), ("b", new MyObj), ("c", new MyObj))
// Get the strings from the tuples
val strings = tuples.map(_._1)
// Output: Seq[String] = List(a, b, c)
注意:使用下划线表示法访问元组成员(其中 索引从1开始,而不是0)
答案 3 :(得分:1)
我建议使用map,filter,fold或foreach(适合您的需要),而不是使用循环遍历集合。
编辑1: 例如 如果你想在每个元素上应用一些func foo(元组)
val newList=oldList.map(tuple=>foo(tuple))
val tupleStrings=tupleList.map(tuple=>tuple._1) //in your situation
如果你想根据一些布尔条件过滤
val newList=oldList.filter(tuple=>someCondition(tuple))
或者只是想要打印列表
oldList.foreach(tuple=>println(tuple)) //assuming tuple is printable
您可以在此处找到示例和类似功能的https://twitter.github.io/scala_school/collections.html