从Scala中另一个列表的成员创建列表的最佳方法

时间:2013-02-28 23:08:14

标签: list scala

我正在尝试从另一个列表中创建Scala中的不可变列表。我的意思是我有列表a,我想列出每个a.myVariable的列表b。我正在寻找的是在不使用可变列表的情况下快速完成此操作。

例如:

a = (person1, person2, person3)

我想要一个清单

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

在Scala中执行此操作的最有效方法是什么?

2 个答案:

答案 0 :(得分: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)

您可以在Scaladoc中找到更多信息。 map是高阶函数,它将另一个函数作为参数,并通过在列表的每个元素上应用此函数来生成新列表。

答案 1 :(得分:3)

这与tenshi的答案相同,只是一个不同的符号。

val b = for (person <- a) yield person.name