2010年2月5日金曜日

Processing | appendの謎

先日Stringの配列にappendする件を取り上げましたが、
String strArray = new String[0];
String s = "日本語"
strArray=append(strArray, s);

といった構文で配列を拡張しながら要素を追加できます。便利ですね。

しかし、自作クラスのオブジェクトを格納しようとすると、どうもうまくいきません。
これはいったい何故なのでしょう。

たとえば自作クラスNodeを考えるとき
Node[] rn = new Node[0];
Node n = new Node("label");
nr = append(rn,n);//エラー

は通りません。

Node[] rn = new Node[0];
Node n = new Node("label");
append(rn,n);

で通りますが、結果はrn.length=0であり、追加されていません。
Java標準で使えるappendはintやStringといった定義済みのデータ型に対してであって、自作のデータ型については使用できないと言う事なのでしょうか。
あらためて思い返してみると、書籍"VisualizingData"においてはNodeに関する機能の一部はnodeCountという変数を作って数を管理する仕組みを作っていました。
この書籍のサンプルはnodesというノード配列、nodeTableというハッシュテーブルという具合に2重構造になっていて、何故このような無駄と思える方法をとっているのか不思議に思っていました。
そして私はハッシュテーブルのみに書き換える方法をとりました。(なぜなら管理が楽)

制作・©:のぼる/N.Lab