Dictionary クラス

 Dictionary クラスは辞書配列を扱うクラスです。

 辞書配列は連想配列とも呼ばれ、名前と、それに結びつけられた値を一つのペアとして、それを複数保持するオブジェクトです。
 配列と同じように [ ] (間接参照) 演算子でアクセスしますが、添え字の代わりに文字列を使い、それが名前となります。名前が識別子として有効なものであれば、 . (直接参照) 演算子も使うことができます。
 また、存在しない名前を参照すると void になります。
 要素を削除するには delete 演算子を使います。

例:
    var d=new Dictionary();
    d["sat"] = 1; // d.sat = 1 と同じ
    d["sun"] = 2; // d.sun = 2 と同じ
    d["mon"] = 3; // d.mon = 3 と同じ
    d["name"] ="value!"; // d.name = "value!" と同じ
    d["continue"] = 4; // continue は識別子ではないが OK
    d.continue = 4; // continue は識別子ではないのでエラー

    var sat = d["sat"]; // 1 が代入される
    var none = d["none"]; // void が代入される

    delete d.sat; // sat を削除
    delete d["continue"]; // continue を削除


式中辞書配列

 %[ ] を使って、式中に Dictionary クラスのオブジェクトをその場で記述することができます。要素名 => 要素の値、をカンマで区切り、初期要素となる式を列挙します。たとえば、
    var dic = %["a" => 1, "b" => 2, "c" => 3];
 と記述すれば、dic に、要素名と要素の組がそれぞれ "a":1"b":2"c":3 となる Dictionary クラスのオブジェクトへの参照が代入されます。
 内部的には、=> はカンマと全く同じものですが、読みやすさを考え、=> を使用できるようになっています ( perl と同じです )。

Dictionary クラスのメソッドへのアクセス

 Dictionary クラスのオブジェクトは、作成された状態ではメンバを何一つ持っていません。
 たとえば、assign メソッドを使おうと思って、Dictionary クラスのオブジェクト dict に対してdict.assign(src) のように記述しても、dict が assign というメソッドを持っていないためにエラーになります。
 したがって、incontextof 演算子を使って、Dictionary クラスに直接属しているメソッドを、対象となる Dictionary クラスのオブジェクトをコンテキストとして実行させます。

例:
    var a = %[];
    var b = %[];
    (Dictionary.assign incontextof a)(b); // b を a にコピー
    (Dictionary.clear incontextof b)(); // b の内容をクリア

saveStruct

 saveStruct はファイルへ構造化されたデータの出力を行います。
 Array クラス の同メソッド参照してください。

assign

 assign メソッドは、辞書配列をコピーします。

構文 : assign(<コピー元辞書配列>, <内容をクリアするか=true>)

 引数で指定された他の辞書配列の内容を、そっくりコピーします。
 「内容をクリアするか」が偽の場合は、コピー先 (メソッドを実行するオブジェクト) の内容をクリアせず、コピー元辞書配列の内容を上書きします。コピー元辞書配列と同じ名前のメンバがコピー先辞書配列にあった場合は、コピー元の内容でコピー先が上書きされます。

 配列 (Arrayクラスのオブジェクト) をコピー元配列に指定した場合は、その配列には、この辞書配列のメンバとなるべき要素が名前、値の順に並んでいるとみなし、その配列の内容をこの辞書配列にコピーします。

assignStruct

 assignStruct メソッドは、辞書配列をコピーします。

構文 : assignStruct(<コピー元辞書配列>)

 引数で指定された他の辞書配列の内容を、そっくりコピーします。
 assign メソッドと違い、メンバに配列あるいは辞書配列があった場合は、再帰的にその内容も コピーします ( assign メソッドの場合は参照がコピーされるだけです )。

clear

 clear メソッドは、辞書配列の内容をすべて消去します。