はじめまして、昨日から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をちょっとかじっていたのでインテレータ使いまくってます(^^;
いつもお世話になっております。アストリー鈴木です。
以上、宜しくお願い致します。