gpt4 book ai didi

ruby - 为什么 `send` 会因 Ruby 2.0 优化而失败?

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:00 24 4
gpt4 key购买 nike

为什么这不起作用?

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 中的改进工作原理的完整解释。

最佳答案

因为 the specification是这样说的:

Indirect method accesses

Any indirect method access such as Kernel#send, Kernel#method, and Kernel#respond_to? shall not honor refinements in the caller context during method lookup.

关于ruby - 为什么 `send` 会因 Ruby 2.0 优化而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15263261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com