From: toyofuku@... Date: 1997-09-19T20:50:33+09:00 Subject: [ruby-list:4458] Re: class variable 豊福@パパイヤです。 うさぎさん >> 構造体的なもの(例えば x,y座標)の配列の >> 初期化をすっきり書くとしたらどう書くのがよい >> でしょうか。 > もし本当にCのstruct相当 > のものでいいのならば、class Structをお使いになるという > のはどうでしょうか? そういうのありましたね。マニュアル読んだときに 見てたはずですがすっかり忘れてました。 でもメンバ名が動的に決まるようなとき以外は Struct を使うよりクラスを直接定義した方が読みやすそうですが どんな使い道に Struct は有効なんでしょうか。 まつもとさん > class CoordArray ... > points = CoordArray.new([1,2],[2,3],...) > >ってのはどうでしょう. けいじゅさん > 以下のような, クラスの特異メソッドを使った実装もありますが? > class Coord > def Coord.coords(*coords) > coords.collect{|coord| Coord.new(*coord)} > end ... > end > > points = Coords.coords([1,2], [2,3], ...) 今回の一次元配列のケースだけだとそれでもよいのですが、 foo = [[[1,2],[2,3]], [[3,4],[4,5]]] foo[0][1].x や foo = {"a" -> [1,2], "b" -> [3, 4]} などの foo["b"].y みたいな多次元配列、ハッシュなどあらゆる形の初期化に 簡単に対応できませんよね。 まつもとさん > Arrayの挙動を変えてしまう2はあまりお勧めでないです. けいじゅさん > 他で痛い目に会いそうですね. はい。やはり [Coord(1,2), ...] 形式で書くことにします。 --- 豊福@パパイヤ unbound@papaya.juice.or.jp toyofuku@juice.or.jp