我创建了一个列表来存储一些数据序列,其中每个序列包含三个元素。如何从序列中提取元素之一?
我尝试过像alco(0)(1)和get()这样的括号,但是它们不起作用。
val alco = List(("Light Beer", "4%", "23 OZ"), ("Regular Beer", "6%", "23 OZ"))
val temp = alco(0).get(1)
println(temp)
结果显示:
错误:值get不是(String,String,String)的成员 val temp = alco(0).get(1)
答案 0 :(得分:3)
scala> val alco = List(("Light Beer", "4%", "23 OZ"), ("Regular Beer", "6%", "23 OZ"))
alco: List[(String, String, String)] = List((Light Beer,4%,23 OZ), (Regular Beer,6%,23 OZ))
scala> val (_, temp, _) = alco(0)
temp: String = 4%
scala> val temp = alco(0)._2
temp: String = 4%
请注意,按索引访问Scala列表具有O(n)
的复杂性,其中n
是列表的大小。因此,如果要遍历它们-最好使用map
,collect
,foldLeft
或foreach
调用:
scala> alco.map { case (_, temp, _) => temp }
res0: List[String] = List(4%, 6%)
scala> alco.foreach { x => println(x._2) }
4%
6%
答案 1 :(得分:1)
@Andriy指出:
val alco = List(("Light Beer", "4%", "23 OZ"), ("Regular Beer", "6%", "23 OZ"))
的类型为List[Tuple3[String, String, String]]
,并且由于Tuple3
没有get
方法,因此您会收到错误消息。
要解决此问题,只需按如下所示定义列表:
val alco = List(List("Light Beer", "4%", "23 OZ"), List("Regular Beer", "6%", "23 OZ"))
这样,它将是List[List[String]]
类型,您的代码应该可以工作。