はじめまして、昨日からrubyを触り出した鈴木と申します。
以後宜しくお願い致します。

これまれ、主にawkで書いていたスクリプトの類をrubyに移行しようかと思っ
ています。

で、早速質問なんですが、構造体(Struct)の配列(Array)を扱いたいのです。
それも、BEGIN{}で初期値を入れたテーブルとして。
色々試してみたのですが、結局、以下の様な方法でなんとか目的は達成できた
のですが、いまいちすっきりしません。

−−力ずく版
$cmd = Array.new;
table = Struct.new("Table", :func, :len, :flag);
[   %w(AAAA AAAA_LEN AAAA_FLAG),
    %w(BBBB BBBB_LEN BBBB_FLAG),
    %w(CCCC CCCC_LEN CCCC_FLAG)
].each do | item |
    $cmd << table.new(*item);
end;

$cmd.each do | item |
    print "Func:"+item.func;
    print " len:"+item.len;
    print " flag:"+item.flag+"\n";
end;

−−ちょっとまし(?)版

class Struct
    def Struct.array(data)
        work = Array.new;
        data.each do | item |
            work << self.new(*item);
        end;
        return work;
    end;
end;

table = Struct.new("Table", :func, :len, :flag);
$cmd = table.array([
    %w(AAAA AAAA_LEN AAAA_FLAG),
    %w(BBBB BBBB_LEN BBBB_FLAG),
    %w(CCCC CCCC_LEN CCCC_FLAG)
]);

$cmd.each do | item |
    print "Func:"+item.func;
    print " len:"+item.len;
    print " flag:"+item.flag+"\n";
end;

なにか、良い案はないものでしょうか。

P.S.
Smalltalkをちょっとかじっていたのでインテレータ使いまくってます(^^;
いつもお世話になっております。アストリー鈴木です。


以上、宜しくお願い致します。