2012年1月12日木曜日

Erlang arrayモジュール まとめ(to_list,to_orddict,sparse_to_list,sparse_to_orddict)

to_list,to_orddict,sparse_to_list,sparse_to_orddictを一気に。

注目は
to_listとsparse_to_orddictの違い

to_orddictとsparse_to_orddictの違い

■to_orddict(Array::array()) -> [{Index::integer(), Value::term()}]
 arrayから{Index,Value}型のオーダーリストへ変換する。

■to_list(Array::array()) -> list()
 arrayからリストへ変換する。

■sparse_to_orddict(Array::array()) -> [{Index::integer(), Value::term()}]
 arrayから{Index,Value}型のオーダーリストへ変換する。ただし、初期値はスキップする。

■sparse_to_list(Array::array()) -> list()
 arrayからリストへ変換する。ただし、初期値はスキップする。

【実行例】

Erlang R14B01 (erts-5.8.2) [smp:2:2] [rq:2] [async-threads:0]

Eshell V5.8.2  (abort with ^G)
1> L1 = [3,2,6,7].
[3,2,6,7]
2> A0 = array:from_list(L1).
{array,4,10,undefined,
       {3,2,6,7,undefined,undefined,undefined,undefined,undefined,
        undefined}}
4> A1 = array:set(5,5,A0).
{array,6,10,undefined,
       {3,2,6,7,undefined,5,undefined,undefined,undefined,
        undefined}}

8> A3 =
8>
8> array:set(9,0,A1).
{array,10,10,undefined,
       {3,2,6,7,undefined,5,undefined,undefined,undefined,0}}

11> array:sparse_to_list(A3).
[3,2,6,7,5,0]
12> array:sparse_to_list(A1).
[3,2,6,7,5]
13> array:sparse_to_orddict(A3).
[{0,3},{1,2},{2,6},{3,7},{5,5},{9,0}]
14> array:sparse_to_list(A2).
[3,2,6,7]
15> array:to_list(A3).
[3,2,6,7,undefined,5,undefined,undefined,undefined,0]
16> array:to_orddict(A3).
[{0,3},
 {1,2},
 {2,6},
 {3,7},
 {4,undefined},
 {5,5},
 {6,undefined},
 {7,undefined},
 {8,undefined},
 {9,0}]