Hashを読み込んで初期化するクラス

メモ


class Test
attr_accessor :hello,:version
def initialize(args)
args.each do |k,v|
s = k.to_s
s = s + "="
send(s.intern,v)
end
end
end


t = Test.new({:hello => 'Hello world' , :version => 1})
p t.hello
p t.version

テスト


$ ruby test.rb
"Hello world"
1

ちなみに最初こういうのを考えたのだがRubyの神様はこれは許してくれないようだ


class Test2
def initialize(args)
args.each do |k,v|
attr k,true
s = k.to_s
s = s + "="
send(s.intern,v)
end
end
end
当面の目的には上で充分なのでいいんだけど.

追記

やり方を教えてもらいました
from http://nokada.jin.gr.jp/t/?02051229
勉強になりました.thanks!

[permalink][contents][page top]