Tie*_*Dad 2 ruby methods metaprogramming
我想Hash#[]=通过调用方法动态覆盖方法f.以下代码不起作用,因为方法内不允许类定义:
def f
class Hash
def []=(k, v)
...
end
end
end
Run Code Online (Sandbox Code Playgroud)
解决方法是放入class Hash一个单独的文件
def f
require 'my_hash.rb'
end
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法避免添加单独的文件.
def f
Hash.send(:define_method, :[]=) do |x, y|
...
end
end
Run Code Online (Sandbox Code Playgroud)