3

Pythonで行われているように、Rubyで関数を装飾する方法はありますか? つまり、各関数の最初 (および最後) で何かを実行します。

このように: http://programmingbits.pythonblogs.com/27_programmingbits/archive/50_function_decorators.html

4

3 に答える 3

4

関数によって閉鎖を意味する場合は、ブロックを使用できます。

def foo
  puts 'before code'

  yield

  puts 'after code'
end

foo { puts 'here is the code' }
于 2012-09-06T16:38:44.863 に答える
2

この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、これをいくつか行うことができます。

于 2012-09-06T16:23:38.870 に答える
0

Python のデコレータ構文 (エミュレートしようとしている機能とは正確に一致しない場合があります) は、装飾されたクラスのメソッドを変更するモジュールを混在させることで Ruby で実現できます。ルーク・レッドパス。

于 2012-09-06T16:42:03.240 に答える