Eloquent Ruby には、理解できないコード例があります。
class Document
attr_accessor :save_listener
# most of the class omitted...
def on_save( &block )
@save_listener = block
end
def save( path )
File.open( path, 'w' ) { |f| f.print( @contents ) }
@save_listener.call( self, path ) if @save_listener
end
end
# usage
my_doc = Document.new( 'block based example', 'russ', '' )
my_doc.on_save do |doc|
puts "Hey, I've been saved!"
end
@save_listener.call( self, path )
2 つの引数を取るのはなぜですか? 保存されたブロックには、パラメーターが 1 つしかないように見えます|doc|
。これは本のタイプミスですか、それとも私が見逃しているものがありますか?
このコードを入力して実行してみましたが、必要な数のパラメーターを追加でき、エラーは発生しないことがわかりました。しかし、この例に 2 つのパラメーターがある理由がまだわかりません。