我有两本词典,它们的价值观可以影响神奇宝贝攻击的类型效果.现在我想将这些结合起来以获得综合效果.
例如,一本字典有:
normal -> 0.5
fire -> 2
Run Code Online (Sandbox Code Playgroud)
另一个有:
water-> 0.5
fire -> 2
Run Code Online (Sandbox Code Playgroud)
合并后将是:
normal -> 0.5
water-> 0.5
fire -> 4
Run Code Online (Sandbox Code Playgroud)
我找到了一个dict函数,名为merge:https://package.elm-lang.org/packages/elm/core/1.0.2/Dict#merge,但无法弄清楚如何使用它,我也找不到例.
那么,你如何使用Dict.merge?你能提供一个例子吗?
gle*_*nsl 12
签名可能会让您感到困惑,因为它不仅限于合并为新的Dict,而是可以合并到一个键值对列表中,例如.在您的案例中阅读签名时,您可以替换result为Dict comparable c.甚至用来Int代替两者a,b和c.
编辑:为便于参考,签名是:
merge :
(comparable -> a -> result -> result)
-> (comparable -> a -> b -> result -> result)
-> (comparable -> b -> result -> result)
-> Dict comparable a
-> Dict comparable b
-> result
-> result
Run Code Online (Sandbox Code Playgroud)
使用它时,为了返回一个新的,Dict我们必须将它Dict.empty作为初始值传递,并将值插入到每个函数的字典中,如下所示:
dictA =
Dict.fromList [ ( "normal", 0.5 ), ( "fire", 2 ) ]
dictB =
Dict.fromList [ ( "water", 0.5 ), ( "fire", 2 ) ]
merged =
Dict.merge
(\key a -> Dict.insert key a)
(\key a b -> Dict.insert key (a + b))
(\key b -> Dict.insert key b)
dictA
dictB
Dict.empty
Run Code Online (Sandbox Code Playgroud)