我想在2级地图中设置一个值 - 即设置为地图中的一个键,该键是“外部”地图中某个键的值。对于普通的地图我可以使用m & at 42 ?= "value"
之类的东西
但我找不到任何方法来嵌套2 at
使用镜头设置这种嵌套值的最简单方法是什么?
答案 0 :(得分:3)
用户陷门出现了一个更好的解决方案 - http://juick.com/qrilka/2602819#19并且它在镜头库中正确:non
答案 1 :(得分:2)
有点,我们可以使用_Just
棱镜,如果没有可用的密钥,它将是no-op。这有一个令人遗憾的结果,我们无法创建2层密钥。但作为一个例子
at2 :: Ord k => k -> k -> IndexedTraversal' k (Map k (Map k v)) (Maybe v)
at2 k1 k2 = at k1 . _Just . at k2