首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala播放;地图上的模式匹配;无法解析Map.unapply

Scala播放;地图上的模式匹配;无法解析Map.unapply
EN

Stack Overflow用户
提问于 2018-06-08 11:02:34
回答 2查看 307关注 0票数 0

我使用scala框架并具有以下简单模板:

代码语言:javascript
复制
@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更改为ListSeq会使红色下划线消失,但我想使用一个可按键搜索的结构,其项与顺序无关。有什么想法吗?如何使模式匹配在Map上与Scala一起在定义块中发挥作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-08 11:17:30

根据API文档的说法,Map没有unapplySeq方法,因此不能在框外匹配模式。您可以尝试按照建议的这里添加自己的内容。

票数 3
EN

Stack Overflow用户

发布于 2018-06-08 12:53:01

看起来你所要做的就是在地图上显示一个值。

如果你有这样的地图:

代码语言:javascript
复制
val myMap = Map("a" -> 1, "b" -> 2)

您可以在这样的播放模板中使用它:

代码语言:javascript
复制
@myMap.get("a").map { aValue =>
  <div>this is a value: @aValue</div>
}

myMap.get("a")返回一个Option。在这种情况下,它将返回Some(1),而如果未定义给定键的值,则返回None

当您在模板中的.map上调用Option时,如果Option不是空的(而不是None),它将返回传递给.map的表达式的结果值。否则,它将返回一个空字符串,即不显示任何内容,这正是您所需要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50759227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档