2013-02-28 64 views
0

我想從另一個列表中創建Scala中的不可變列表。我的意思是,我有一個列表,我想列出每個a.myVariable的列表b。我正在尋找的是一個快速的方法來做到這一點,而不使用可變列表。從Scala的另一個列表成員創建列表的最佳方式

例如:

a = (person1, person2, person3) 

,我希望有一個列表

b = (person1.name,person2.name,person3.name) 

什麼是Scala這樣做的最有效的方法是什麼?

回答

6

您需要使用集合上可用的map方法。這裏是一個例子:

scala> case class Person(name: String) 
defined class Person 

scala> val a = List(Person("test1"), Person("test2"), Person("test3")) 
a: List[Person] = List(Person(test1), Person(test2), Person(test3)) 

scala> val b = a.map(_.name) 
b: List[String] = List(test1, test2, test3) 

你可以找到更多的信息在Scaladocmap是高階函數,它將另一個函數作爲參數,並通過在列表的每個元素上應用此函數來生成新列表。

+0

這正是我需要的,謝謝。 – kingdamian42 2013-02-28 23:25:45

3

這和天士的答案是一樣的,只是一個不同的符號。

val b = for (person <- a) yield person.name 
相關問題