別のリストから Scala で不変リストを作成しようとしています。つまり、リスト a があり、すべてのリスト b を作成したいということです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
別の関数を引数として取り、この関数をリストの各要素に適用して新しいリストを生成する高階関数です。
これは天使の答えと同じですが、表記が異なります。
val b = for (person <- a) yield person.name