eva*_*ner 7 scala map playframework-2.1
我在这里有一个真正的大脑放屁.我正在使用Play Framework.我有一个方法,它采用地图并将其转换为HTML选择元素.我有一个单行程序来获取一个对象列表并将其转换为两个对象字段的地图,id并且name.但是,我是一名Java程序员,我的Scala很弱,而且我只是忘记了我是如何做到这一点的语法.
我有类似的东西
organizations.all.map {org => /* org.prop1, org.prop2 */ }
Run Code Online (Sandbox Code Playgroud)
任何人都可以完成评论部分吗?
Bri*_*new 12
我会建议:
map { org => (org.id, org.name) } toMap
Run Code Online (Sandbox Code Playgroud)
例如
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)
Run Code Online (Sandbox Code Playgroud)
你也可以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)
Run Code Online (Sandbox Code Playgroud)
使用collection.breakOut隐式CanBuildFrom允许您基本上跳过Map从a 获取a的过程中的一个步骤List.