修改Map中的元素

时间:2013-07-25 15:26:33

标签: list map ocaml mutable

我已经定义了以下几种类型:

module SMap = Map.Make(String)

type s = 
  { t: int
    fa: int list } 

type t = s SMap.t

我想编写一个函数modify,将100添加到列表fa中,以获取与key对应的元素。以下代码有效:

let modify (key: String) (x: t) =
  let a = SMap.find key x in
  SMap.add key { a with fa = a.fa @ [100] } (SMap.remove key x)

然而,删除和添加元素对我来说似乎是多余的...可以告诉我是否有更好的方法来直接修改它?

1 个答案:

答案 0 :(得分:2)

是的,您可以添加它。

地图只能包含一次密钥,因此如果您使用此密钥添加另一个映射,则会删除之前的密钥。

http://caml.inria.fr/pub/docs/manual-ocaml/libref/Map.Make.html#VALadd