我正在尝试从另一个列表在 Scala 中创建一个不可变列表。我的意思是我有列表 a 并且我想制作列表 b ,它是 every a.myVariable
。我正在寻找的是一种不使用可变列表的快速方法。
例如:
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
是高阶函数,它接受另一个函数作为参数,并通过将此函数应用于列表的每个元素来生成新列表。
这与 Tenshi 的答案相同,只是符号不同。
val b = for (person <- a) yield person.name