Scala - как получить элемент списка - PullRequest
1 голос
/ 25 января 2011

Я пытаюсь получить элемент из списка:

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

Любая помощь?Задача состоит в том, чтобы печатать отдельно строки и числа, например:

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

, но это не работает.

Ответы [ 5 ]

6 голосов
/ 25 января 2011

Хорошей практикой в ​​функциональном программировании является максимально возможное использование преобразований неизменяемых объектов без побочных эффектов.

Это означает (в данном случае), что вы можете преобразовать список кортежей в список строк, а затем ограничить свой побочный эффект (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") 
5 голосов
/ 25 января 2011
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
4 голосов
/ 25 января 2011
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
1 голос
/ 25 января 2011

Я бы использовал сопоставление с образцом, которое дает шаблон программирования, который лучше масштабируется для больших кортежей и более сложных элементов:

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

0 голосов
/ 25 января 2011

для строк, используйте

List((1,"aoeu")).foreach(((<code>_</code>:Tuple2[String,<code>_</code>])._1) andThen print)
для чисел, используйте
List(("aoeu",13.0)).foreach(((<code>_</code>:Tuple2[<code>_</code>,Double])._2) andThen print)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...