代码之家  ›  专栏  ›  技术社区  ›  The Oddler

埃尔姆:如何合并两本词典?

  •  5
  • The Oddler  · 技术社区  · 7 年前

    我有两个字典,它们的值包含Pokmon攻击的数据类型有效性。现在我想把这些结合起来,以达到综合效果。

    例如,一本词典有:

     normal -> 0.5
     fire -> 2
    

    另一个是:

     water-> 0.5
     fire -> 2
    

    合并后的结果将是:

     normal -> 0.5
     water-> 0.5
     fire -> 4
    

    我找到了一个dict函数,名为 merge : https://package.elm-lang.org/packages/elm/core/1.0.2/Dict#merge ,但我不知道如何使用它,也找不到一个例子。

    那么,如何使用Dict.merge?你能举个例子吗?

    1 回复  |  直到 7 年前
        1
  •  14
  •   glennsl Namudon'tdie    7 年前

    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
    

    使用时,为了返回新的 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
    
    推荐文章