2006-03-18
↓の
うお、rubyco さん(たぶん隠れツンデレ)のところにもっといい解が。そっか define_method かぁ。ruby 歴二年ちょいなのにすぐに思い浮かばなかった俺って…。
.new つけるとめんどくさいから嫌い
とかいう話題だけど、つけた方がそのオブジェクトのインスタンスを返すつーのが解りやすいのでコードが読みやすくなっていいと思うんだけど。でも URI とか
uri = URI 'http://foobar.example.com/'
で違和感なく使ってるし、慣れれば new なくても問題ないのかも。あと d:id:shinichiro_h:20060318#1142614350 まねして Class#inherited つかって実装してみた。eval 使ってるとこがダサイので誰か解決方法教えて下さい!
class Class
def inherited(subclass)
unless subclass.to_s.include?(':') || ::Kernel.public_methods.include?(subclass)
eval <<-EOF
module ::Kernel
def #{subclass}(*args)
#{subclass}.new *args
end
module_function :#{subclass}
end
EOF
end
end
end
class Foo
end
p Foo()
#=> #