ふなばです。
ちょっと手を加えました。適切でないところがあるかもしれませんが、ひとま
ず考えていたことはできそうかなと思っています。
# once.rb: Written by Tadayoshi Funaba 1998
# $Id: once.rb,v 1.2 1998/07/04 13:25:48 tadf Exp tadf $
class Module
def once(*ids)
for id in ids
module_eval <<" end"
alias_method :__#{id}__, #{id}
def #{id.id2name}(*args, &block)
def self.#{id.id2name}(*args, &block); @__#{id}__ end
@__#{id}__ = __#{id}__(*args, &block)
end
end
end
end
private :once
def once_class_method(*ids)
for id in ids
module_eval <<" end"
class << #{self.name}
once #{id}
end
end
end
end
private :once_class_method
end
--Tadayoshi Funaba