2012-04-17 32 views
0

如何僅從類列表中獲取確切屬性,例如,如何僅從類列表中獲取確切屬性

case class Person(name: String, age: Int) 

val a = Person("a", 1) 
val b = Person("b", 1) 
val persons = List(a, b) 

val names = ??? 

assertEquals(List("a", "b"), names) 

回答

3

試試這個:

scala> val names = persons.map(_.name) 
names: List[String] = List(a, b) 

或者這樣,如果你想在同一時間訪問多個字段:

scala> val names = persons.map{ case Person(name, age) => name } 
names: List[String] = List(a, b) 
+0

很好,謝謝,你也可以加上這個s'val names = persons.map {case p:Person => p.name}'給你的回答 – yons88 2012-04-17 16:25:18

+2

@ yons88,'case p:Person => p.name'只是一種更詳細的書寫'_.name '。類型註釋是不必要的,因爲Scala已經知道它正在'List [Person]上運行,而'p => p.name'只是'_.name'的一個更詳細的版本。 – dhg 2012-04-17 16:27:14

0

,你也可以做 for { person <- persons } yield person.name 這基本上是與地圖相同的東西