Scala - 如何获取列表元素

我正试图从列表中获取元素:
data =List(("2001",13.1),("2009",3.1),("2004",24.0),("2011",1.11))
有帮助吗?任务是分别打印字符串和数字,如:
print(x._1+" "+x._2) 
但这不起作用。     
已邀请:
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
    
函数式编程的一个好习惯是尽可能地使用不可变对象的无副作用转换。 这意味着(在这种情况下)你可以将元组列表转换为字符串列表,然后将你的副作用(
println
)限制在最后的一个步骤。
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") 
    
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
    
我会使用模式匹配,它产生的编程模式可以更好地扩展为更大的元组和更复杂的元素:
data.foreach { case (b,c) => println(b + " " + c) }
    
对于字符串,使用
List((1,"aoeu")).foreach(((
_
:Tuple2 [String,
_
])._ 1)然后打印) 对于数字,使用List((“aoeu”,13.0))。foreach(((
_
:Tuple2 [
_
,Double])._ 2)然后打印)     

要回复问题请先登录注册