Pythonで行われているように、Rubyで関数を装飾する方法はありますか? つまり、各関数の最初 (および最後) で何かを実行します。
このように: http://programmingbits.pythonblogs.com/27_programmingbits/archive/50_function_decorators.html
Pythonで行われているように、Rubyで関数を装飾する方法はありますか? つまり、各関数の最初 (および最後) で何かを実行します。
このように: http://programmingbits.pythonblogs.com/27_programmingbits/archive/50_function_decorators.html
関数によって閉鎖を意味する場合は、ブロックを使用できます。
def foo
puts 'before code'
yield
puts 'after code'
end
foo { puts 'here is the code' }
このalias_method
機能を使用して、この効果を達成できます。
alias_method :old_foo, :foo
def foo
# ... before stuff ...
r = old_foo
# ... after stuff ...
return r
end
Ruby on Rails 内でalias_method_chain
、これをいくつか行うことができます。
Python のデコレータ構文 (エミュレートしようとしている機能とは正確に一致しない場合があります) は、装飾されたクラスのメソッドを変更するモジュールを混在させることで Ruby で実現できます。ルーク・レッドパス。