Curlの持つコレクション・クラスについて、説明します。
配列(FastArray-of)
Curlで配列を扱うには、FastArray-ofを利用します。FastArray-ofの宣言時に引数として、配列の型を定義します。また、配列は最大サイズを宣言時点で指定する必要があります。
def a = {new {FastArray-of int}, max-size = 3}
または def a = {{FastArray-of int} max-size = 3} || newは省略可 {a.append 1} || 追加 |
データを追加する際は、appendメソッドを利用し、値を参照する場合は、変数名[インデックス]でアクセスできます。インデックスは0から始まります。
リスト(Array-of)
Javaのようなリスト(List、ArrayList)を扱うには、Array-ofを利用します。これはFastArray-ofのように、最大サイズは指定する必要がありません。
def a = {new {Array-of int}, 1, 2, 3} || 初期値も設定 または def a = {{Array-of int} 1, 2, 3} || newは省略可 {dump a[0], a[1], a[2], a.size} |
ハッシュテーブル(連想配列)(HashTable-of)
Javaのハッシュマップ(Map、HashMap)のような連想配列を扱うには、HashTable-ofを利用します。これはキーと値をもちますので、引数にキーの型と値の型を指定する必要があります。値を参照するには、変数名[“キー名”]でアクセスできます。値をセットするには、setメソッドを利用します。
def h = {new {HashTable-of String, int}, “key1”, 1, “key2”, 2, “key3”, 3} または def h = {{HashTable-of String, int} “key1”, 1, “key2”, 2, “key3”, 3} || newは省略可 {h.set “key4”, 4} {dump h[“key1”], h[“key2”], h[“key3”], h[“key4”], h.size} |
コンテナループ
上記のような配列やリスト・連想配列をFor文で繰り返して、値を取得するには以下のようにin句を利用します。(連想配列の場合は、key句でキーの値も取得できます。)
|| 配列・リスト {for v in a do || vに値 {dump v} } || 連想配列 |
タプル
バージョン6.0からタプルがサポートされました。これはPython等にサポートされている編集不可のコレクションクラスです。これを利用するには、Tuple2-of、Tuple3-of、Tuple4-of、Tuple5-ofクラスを使います。具体的な例を以下に記載します。
|| Tuple2-ofの例 || Tuple5-ofの例 |
メモ
ちなみにFastArray-ofからArray-ofを生成するには、Array-ofのfrom-FastArrayコンストラクタを利用し、逆にArray-ofからFastArray-ofを生成するには、underlying-FastArrayアクセサを利用します。