最初の一回だけブロックを実行する そのに
id:znz:20060604:p1
むむ。おっしゃる通りです。ということでProcを継承したバージョンを書いてみました。
class OnlyOnceProc < Proc def call(*args) unless defined? @called super(*args) @called = true end end end if __FILE__ == $0 proc = OnlyOnceProc.new {|arg| puts 'called!! ' + arg } proc.call('hoge') # => called!! hoge proc.call # ブロックは実行されない。 end