無題の備忘録

IT技術について調べたことや学んだこと、試したこと記録するブログです。Erlang、ネットワーク、 セキュリティ、Linux関係のものが多いです。

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}]