Bog*_*iev 7 ruby methods eval metaprogramming
在查看ActiveSupport源代码时,我注意到有时eval会在define_method足够的地方使用.
示例:ActiveSupport:Module.delegate
我认为define_method更干净,更安全的做事方式.是什么带来的好处eval了define_method?性能,内存使用,还有其他什么?
当您使用define_method时,您定义的方法不能接受块。
\n\n\n\n\n众所周知,由于 Ruby 1.8 中块参数的缺陷,Class#define_method 无法定义采用块的方法。
\n
def x *args, █ end # => works!\ndefine_method(:x) {|*args,&block| } # => SyntaxError: compile error\nRun Code Online (Sandbox Code Playgroud)\n\n定义的方法需要一个块:
\n\n"def #{prefix}#{method}(*args, &block)" # def customer_name(*args, &block)\nRun Code Online (Sandbox Code Playgroud)\n\n所以不能使用define_method。
\n| 归档时间: |
|
| 查看次数: |
1401 次 |
| 最近记录: |