2

別のリストから Scala で不変リストを作成しようとしています。つまり、リスト a があり、すべてのリスト b を作成したいということです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

これは天使の答えと同じですが、表記が異なります。

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