まつもと ゆきひろです
In message "[ruby-list:15059] Re: 複雑?な構造体の定義方法"
on 99/06/21, Koichi Shigematsu <shige / ecc.denso.co.jp> writes:
|> この問題ならば別に構造体を作らなくてもObjectのインスタンスを
|> 作って、evalかなにかで特異メソッドを追加していくだけでよいの
|> ではないかと思いますが、やりたいことがもっとはっきりすると答
|> えももっとはっきりするでしょう。
|はいっ。 試してみます! と言いたいのですが、ちょっと「宇宙語」になって
|しまいました。 どこかに例題など有りませんでしょうか?
|#完全にRubyの勉強不足ですね。 <- でも頑張ります。
ヒントがないとかわいそうでしょうから、とりあえず出発点になり
そうなスクリプトを(eval使ってないけど)。
class Entry
def initialize(name, para, opt, x, y)
@name = name
@para = para
@opt = opt
@x = x
@y = y
@data = {}
end
attr_reader :para, :opt, :x, :y
def [](idx)
@data[idx]
end
def []=(idx, data)
@data[idx] = data
end
end
comp = {}
last = nil
while gets
chomp!
if /Table *= *(\w+) */
last = comp[$1] = Entry::new($1, *$'.split)
elsif last and /subtable *= *(\d+) */
last[Integer($1)] = $'
end
end
print "opt0 \n" if(comp["name0"].opt == "opt0")
xx=comp["name1"].x # -> x1をxxに代入
yy=comp["name1"].y # -> y1をyyに代入
p xx
p yy
p comp["name1"].para # -> "para2"を出力
p comp["name2"][8] # -> "str21"を出力