Scala - 如何获取列表元素

时间:2011-01-25 12:06:53

标签: list scala printing

我正在尝试从列表中获取元素:

data =List(("2001",13.1),("2009",3.1),("2004",24.0),("2011",1.11))

有任何帮助吗?任务是分别打印字符串和数字,如:

print(x._1+" "+x._2) 

但这不起作用。

5 个答案:

答案 0 :(得分:6)

函数式编程的一个好习惯是尽可能地使用不可变对象的无副作用转换。

这意味着(在这种情况下)是你可以将元组列表转换为字符串列表,然后将副作用(println)限制在最后一步。< / p>

val data = List(("2001",13.1),("2009",3.1),("2004",24.0),("2011",1.11))
val lines = data map { case(a,b) => a + " " + b.toString }
println(lines mkString "\n") 

答案 1 :(得分:5)

scala> val data =List(("2001",13.1),("2009",3.1),("2004",24.0),("2011",1.11))
data: List[(java.lang.String, Double)] = List((2001,13.1), (2009,3.1), (2004,24.0), (2011,1.11))

scala> data.foreach(x => println(x._1+" "+x._2))
2001 13.1
2009 3.1
2004 24.0
2011 1.11

答案 2 :(得分:4)

val list = List(("2001",13.1),("2009",3.1),("2004",24.0),("2011",1.11))
println(list map (_.productIterator mkString " ") mkString "\n")

2001 13.1
2009 3.1
2004 24.0
2011 1.11

答案 3 :(得分:1)

我会使用模式匹配产生一种编程模式,可以更好地扩展更大的元组和更复杂的元素:

data.foreach { case (b,c) => println(b + " " + c) }

答案 4 :(得分:0)

对于字符串

,请使用

List((1,"aoeu")).foreach(((_:Tuple2[String,_])._1) andThen print)
对于数字,请使用
_