gpt4 book ai didi

ruby - 需要一个未知常数并继续

转载 作者:太空宇宙 更新时间:2023-11-03 18:27:51 25 4
gpt4 key购买 nike

我正在尝试为一个包创建“autorequire”,也就是说,如果 Ruby 遇到未知常量,它会尝试要求它,如果要求成功,则从它停止的地方继续。现在我有这样的东西:

def autoload(&block)
yield
rescue NameError => e
if e.message[/constant/]
require e.name.to_s.downcase rescue LoadError raise
retry
end
raise
end

所以如果我像这样使用它

autoload {
print "Hello, "
x = ArrayFields.new
x << "World!"
puts x[0]
}

正如预期的那样,它将打印 Hello, Hello, World!。所以它处理常量的要求,但从头开始执行整个给定的 block 。那么如何跳到失败发生的地方呢?这主要是出于学术兴趣,所以我也对此类尝试的任何危险感兴趣。

最佳答案

不可能跳回到救援子句异常之前的那个点。一个更可行的方法来做你想做的是覆盖 const_missing .

关于ruby - 需要一个未知常数并继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8445113/

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