我想從另一個列表中創建Scala中的不可變列表。我的意思是,我有一個列表,我想列出每個a.myVariable
的列表b。我正在尋找的是一個快速的方法來做到這一點,而不使用可變列表。從Scala的另一個列表成員創建列表的最佳方式
例如:
a = (person1, person2, person3)
,我希望有一個列表
b = (person1.name,person2.name,person3.name)
什麼是Scala這樣做的最有效的方法是什麼?
我想從另一個列表中創建Scala中的不可變列表。我的意思是,我有一個列表,我想列出每個a.myVariable
的列表b。我正在尋找的是一個快速的方法來做到這一點,而不使用可變列表。從Scala的另一個列表成員創建列表的最佳方式
例如:
a = (person1, person2, person3)
,我希望有一個列表
b = (person1.name,person2.name,person3.name)
什麼是Scala這樣做的最有效的方法是什麼?
您需要使用集合上可用的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)
你可以找到更多的信息在Scaladoc。 map
是高階函數,它將另一個函數作爲參數,並通過在列表的每個元素上應用此函數來生成新列表。
這和天士的答案是一樣的,只是一個不同的符號。
val b = for (person <- a) yield person.name
這正是我需要的,謝謝。 – kingdamian42 2013-02-28 23:25:45