【发布时间】:2015-05-23 18:54:14
【问题描述】:
-
List("a"->1, "b"->2) match { case List( k->v ,_*) => println(k) }
错误:未找到:值 -> List("a"->1, "b"->2) match { case List( (k,v) ,_*) => println(k) }
成功Map("a"->1, "b"->2) match { case Map( (k,v) ,_*) => println(k) }
错误:value Map 不是 case 类,也没有 unapply/unapplySeq 成员
你能解释一下为什么左边使用箭头->成功吗?而在右手边,-> 失败了。
如果我把它改成真正的类型Tuple(k,v),那么它就成功了。
但是,如果使用 Map 会再次失败。
我无法想象 Scala 没有为 Map 实现 unapply?!
编辑:
我认为:: 可以用于模式匹配; -> 也可以。
好的,现在-> 是一个方法,所以不能匹配。
Scala 不直观。
【问题讨论】:
-
您觉得不适合在地图上做什么?对于列表,有一个排序,所以很清楚匹配什么。对于地图,没有。