2

我正在尝试从另一个列表在 Scala 中创建一个不可变列表。我的意思是我有列表 a 并且我想制作列表 b ,它是 every a.myVariable。我正在寻找的是一种不使用可变列表的快速方法。

例如:

a = (person1, person2, person3)

我想要一份清单

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

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

4

2 回答 2

7

您需要使用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是高阶函数,它接受另一个函数作为参数,并通过将此函数应用于列表的每个元素来生成新列表。

于 2013-02-28T23:13:27.897 回答
4

这与 Tenshi 的答案相同,只是符号不同。

val b = for (person <- a) yield person.name
于 2013-03-01T08:26:57.263 回答