|
Curlの持つコレクション・クラスについて、説明します。
配列(FastArray-of)
Curlで配列を扱うには、FastArray-ofを利用します。FastArray-ofの宣言時に引数として、配列の型を定義します。また、配列は最大サイズを宣言時点で指定する必要があります。
let a:{FastArray-of int} = {new {FastArray-of int}, max-size = 3}
または
let a:{FastArray-of int} = {{FastArray-of int} max-size = 3} || newは省略可
{a.append 1} || 追加 {a.append 2} || 追加 {a.append 3} || 追加
{dump a[0], a[1], a[2], a.size} |
データを追加する際は、appendメソッドを利用し、値を参照する場合は、変数名[インデックス]でアクセスできます。インデックスは0から始まります。
リスト(Array-of)
Javaのようなリスト(List、ArrayList)を扱うには、Array-ofを利用します。これはFastArray-ofのように、最大サイズは指定する必要がありません。
let a:{Array-of int} = {new {Array-of int}, 1, 2, 3} || 初期値も設定
または
let a:{Array-of int} = {{Array-of int} 1, 2, 3} || newは省略可
{dump a[0], a[1], a[2], a.size} |
ハッシュテーブル(連想配列)(HashTable-of)
Javaのハッシュマップ(Map、HashMap)のような連想配列を扱うには、HashTable-ofを利用します。これはキーと値をもちますので、引数にキーの型と値の型を指定する必要があります。値を参照するには、変数名["キー名"]でアクセスできます。値をセットするには、setメソッドを利用します。
|
let h:{HashTable-of String, int} = {new {HashTable-of String, int}, "key1", 1, "key2", 2, "key3", 3}
または
let h:{HashTable-of String, int} = {{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} }
|| 連想配列 {for v key k in h do || kにキー値 || vに値 {dump k, v} } |
タプル
バージョン6.0からタプルがサポートされました。これはPython等にサポートされている編集不可のコレクションクラスです。これを利用するには、Tuple2-of、Tuple3-of、Tuple4-of、Tuple5-ofクラスを使います。具体的な例を以下に記載します。
|
|| Tuple2-ofの例 def t2 = {{Tuple2-of int, String} 1, "hoge." } {output t2[0], t2[1]} || アクセス方法は配列と同様
|| Tuple5-ofの例 def t5 = {{Tuple5-of int, int, String, String, bool} 1, 100, "hoge", "foo", true } {for v in t5 do {output v} || コンテナループも利用可能 }
|
|