我使用scala框架并具有以下简单模板:
@defining({
Map("a" -> 1, "b" -> 2)
}) { case Map("a" -> aValue, *) =>
<div>
this is a value: @a
</div>
}IntelliJ Idea在case Map(...中强调Map,说它“不能解决方法Map.unapply”,也“不能解析符号地图”。
将实现从Map更改为List或Seq会使红色下划线消失,但我想使用一个可按键搜索的结构,其项与顺序无关。有什么想法吗?如何使模式匹配在Map上与Scala一起在定义块中发挥作用?
发布于 2018-06-08 11:17:30
发布于 2018-06-08 12:53:01
看起来你所要做的就是在地图上显示一个值。
如果你有这样的地图:
val myMap = Map("a" -> 1, "b" -> 2)您可以在这样的播放模板中使用它:
@myMap.get("a").map { aValue =>
<div>this is a value: @aValue</div>
}myMap.get("a")返回一个Option。在这种情况下,它将返回Some(1),而如果未定义给定键的值,则返回None。
当您在模板中的.map上调用Option时,如果Option不是空的(而不是None),它将返回传递给.map的表达式的结果值。否则,它将返回一个空字符串,即不显示任何内容,这正是您所需要的。
https://stackoverflow.com/questions/50759227
复制相似问题