字典

字典在 Dict 核心库中实现。

将字符映射到值的唯一键的字典。键可以是任何类似的类型。这包括 Int,Float,Time,Char,String 和元组或类似类型的列表。

插入,删除和查询操作都需要 O(log n)时间。

与元组和记录不同,字典可以更改其结构,换句话说,可以添加和删除键。

可以通过键更新值。

还可以使用动态密钥访问或更新值。

访问值

你可以使用 Dict.get 函数从 Dictionary 中检索值。

Dict.get 的类型定义:

get : comparable -> Dict comparable v -> Maybe v

它将始终返回 Maybe v,因为可以尝试通过不存在的键获取值。

import Dict

initialUsers =
      Dict.fromList [ (1, "John"), (2, "Brad") ]

getUserName id =
  initialUsers
  |> Dict.get id
  |> Maybe.withDefault "Anonymous"
  
getUserName 2 -- "Brad"
getUserName 0 -- "Anonymous"

更新值

使用 Maybe.map 执行对 Dictionary 的更新操作,因为可能不存在所请求的密钥。

import Dict

initialUsers =
  Dict.fromList [ (1, "John"), (2, "Brad") ]

updatedUsers =
  Dict.update 1 (Maybe.map (\name -> name ++ " Johnson")) initialUsers

Maybe.withDefault "No user" (Dict.get 1 updatedUsers) -- "John Johnson"