Erlang の maps モジュールを一通り試す - その3
OTP 17.0 から maps モジュールが追加された。一通り試す。
公式URL:http://erlang.org/doc/man/maps.html
next/1 関数
next(Iterator) -> {Key, Value, NextIterator} | none
Types
Iterator = NextIterator = iterator(Key, Value)
イテレータの次のキーと値の関連付けと、イテレータの残りの関連付けの新しいイテレータを返す。
イテレータに関連付けがもうない場合、none
を返す。
Example:
> M = #{a => 1, b => 2, c => 3}. #{a => 1,b => 2,c => 3} > I = maps:iterator(M). [0|#{a => 1,b => 2,c => 3}] > {K1, V1, I1} = maps:next(I). {a,1,{b,2,{c,3,none}}} > {K2, V2, I2} = maps:next(I1). {b,2,{c,3,none}} > {K3, V3, I3} = maps:next(I2). {c,3,none} > maps:next(I3). none
put/3 関数
put(Key, Value, Map1) -> Map2
Types
Key = Value = term() Map1 = Map2 = map()
キーKey
を値Value
の関連付けをマップMap2に挿入する。 キーKey
がマップMap1
にすでに存在する場合、すでに存在する値は引数のValue
に置き換えられる。 この関数は、Map1
の関連付けと引数の新しい関連付けを含んだ新しいマップMap2
を返す。
Map1
がマップでない場合、呼び出しは{badmap, Map}
例外で失敗する。
Example:
> M = #{a=>1}. #{a => 1} > maps:put(a, 2, M). #{a => 2} > maps:put(b, 3, M). #{a => 1,b => 3}
remove/2 関数
remove(Key, Map1) -> Map2
Types
Key = term() Map1 = Map2 = map()
キーが存在する場合は、キーと関連付けられた値をMap1
から削除して、新しいマップMap2
を返す。
Map1
がマップでない場合、呼び出しは{badmap, Map}
例外で失敗する。
Example:
> M = #{a=>1,b=>2}. #{a => 1,b => 2} > maps:remove(a, M). #{b => 2} > maps:remove(c, M). #{a => 1,b => 2}
size/1 関数
size(Map) -> integer() >= 0
Types
Map = map()
Mapのキーと値の関連付けの数を返す。
Example:
> M = #{a=>1,b=>2,c=>3}. #{a => 1,b => 2,c => 3} > maps:size(M). 3
take/2 関数
take(Key, Map1) -> {Value, Map2} | error
Types
Map1 = #{Key => Value, term() => term()} Map2 = #{term() => term()}
キーが存在する場合は、キーに関連付けられた値とその関連付けをMap1
から削除した新しいマップMap2
をタプルにして返す。
キーが存在しない場合は、error
を返す。
Map1
がマップでない場合、呼び出しは{badmap, Map}
例外で失敗する。
Example:
> M = #{a=>1,b=>2}. #{a => 1,b => 2} > maps:take(a, M). {1,#{b => 2}} > maps:take(c, M). error
to_list/1 関数
to_list(Map) -> [{Key, Value}]
Types
Map = #{Key => Value}
Map
のキーと値の関連付けを表すペアのリストを返す。ここで、ペア[{K1, V1}, ..., {Kn、Vn}]
は任意の順序で返す。
Map
がマップでない場合、呼び出しは{badmap, Map}
例外で失敗する。
Example:
> M = #{a=>1, b=>2, c=>3}. #{a => 1,b => 2,c => 3} > maps:to_list(M). [{a,1},{b,2},{c,3}]