我正在尝试从另一个列表中创建Scala中的不可变列表。我的意思是我有列表a,我想列出每个a.myVariable
的列表b。我正在寻找的是在不使用可变列表的情况下快速完成此操作。
例如:
a = (person1, person2, person3)
我想要一个清单
b = (person1.name,person2.name,person3.name)
在Scala中执行此操作的最有效方法是什么?
答案 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