2014-05-12 :-(
_ 午後
1300 デバッグしTARI
_ [hash][ハッシュ][ruby][プロパティ][アクセッサ]ハッシュのキーをプロパティのように扱う
よく attr_accessor してるんだけど数が増えると壊滅する。
# coding: utf-8 class PConfig attr_accessor :foo attr_accessor :bar attr_accessor :baz def initialize(config_path) config = eval(File.open(config_path).read) @foo = config[:foo] @bar = config[:bar] @baz = config[:baz] end end def main(argv) conf_path = argv[0] config = PConfig.new(conf_path) puts config.foo puts config.bar puts config.baz end main(ARGV)
こういうのを別途用意
# coding: utf-8 Config = { :foo => 'FOO', :bar => 'BAR', :baz => 'GAZ', }
実行
>ruby prop0.rb prop.conf FOO BAR GAZ
method_missing でイケるらしい。うーん。ハッシュキーをメソッド名(プロパティ)としてハッシュにアクセス(読出、そして代入も)するには - 別館 子子子子子子(ねこのここねこ)
prop.conf で symbol を使ってるので to_sym しておく。
# coding: utf-8 class PConfig def initialize(config_path) @config = eval(File.open(config_path).read) end def method_missing(name) return @config[name.to_sym] if @config.has_key?(name.to_sym) super.method_missing(name) end end def main(argv) conf_path = argv[0] config = PConfig.new(conf_path) puts config.foo puts config.bar puts config.baz end main(ARGV)
>ruby prop1.rb prop.conf FOO BAR GAZ