8

私はここで本当の脳のおならをしています。Play フレームワークを使用しています。マップを取得して HTML 選択要素に変換するメソッドがあります。オブジェクトのリストを取得し、それをオブジェクトの 2 つのフィールドのマップに変換するワンライナーがありidましたname。しかし、私は Java プログラマーであり、私の Scala は弱く、どのように行ったかの構文を忘れてしまっただけです。

私は次のようなものを持っていました

organizations.all.map {org => /* org.prop1, org.prop2 */ }

誰でもコメント部分を完成できますか?

4

2 に答える 2

13

私は提案します:

map { org => (org.id, org.name) } toMap

例えば

scala> case class T(val a : Int, val b : String)
defined class T

scala> List(T(1, "A"), T(2, "B"))
res0: List[T] = List(T(1,A), T(2,B))

scala> res0.map(t => (t.a, t.b))
res1: List[(Int, String)] = List((1,A), (2,B))

scala> res0.map(t => (t.a, t.b)).toMap
res2: scala.collection.immutable.Map[Int,String] = Map(1 -> A, 2 -> B)
于 2013-08-19T16:14:58.810 に答える
6

仲介者を方程式から外して、次のようListに直接進むこともできます。Map

case class Org(prop1:String, prop2:Int)
val list = List(Org("foo", 1), Org("bar", 2))  
val map:Map[String,Int] = list.map(org => (org.prop1, org.prop2))(collection.breakOut)

collection.breakOut暗黙的に使用すると、基本的にからCanBuildFromを取得するプロセスのステップをスキップできます。MapList

于 2013-08-19T16:20:45.923 に答える