有没有办法像在 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 中通过混合一个修改装饰类的方法的模块来实现,如“使用 Ruby 的 8 行装饰器模式”中简洁描述的那样卢克·雷德帕斯。