1

次のようにいくつかのタイプを定義しました。

module SMap = Map.Make(String)

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

type t = s SMap.t

に対応する要素のリストmodifyに追加する関数を書きたいと思います。次のコードが機能します。100fakey

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)

ただし、要素の削除と追加は冗長に見えます...直接変更するより良い方法があるかどうか教えてください。

4

1 に答える 1

2

はい、追加できます。

マップにはキーを 1 回しか含めることができないため、このキーを使用して別のマッピングを追加すると、前のマッピングが削除されます。

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

于 2013-07-25T17:04:02.663 に答える