为什么这不起作用?
module StringRefinement
refine String do
def bar
length
end
end
end
using StringRefinement
"abcdefghijklmnopqrstuvwxyz".send(:bar)
#NoMethodError: undefined method 'bar' for "abcdefghijklmnopqrstuvwxyz":String
有人可以解释为什么吗send
在这里不起作用?有没有办法动态调用细化中定义的方法?我似乎找不到关于 Ruby 2.0 中的优化如何工作的良好、完整的解释。
Because 规格 http://Bugs.Ruby-Lang.Org/projects/ruby-trunk/wiki/RefinementsSpec这么说:
间接方法访问
任何间接方法访问,例如Kernel#send
, Kernel#method
, and Kernel#respond_to?
在方法查找期间不应遵循调用者上下文中的细化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)