gpt4 book ai didi

ruby - method_missing 中的堆栈级别太深

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

我有以下 Ruby 方法,它给出了 RSpec 错误“堆栈级别太深”,我不确定为什么 - 非常感谢任何帮助!

def method_missing(method_name, *args)
full_method_name = "#{self.class.to_s.downcase}_#{method_name.to_s}"
respond_to(:full_method_name) ? send(:full_method_name, @options) : super
end

最佳答案

当您遇到 stack level too deep 错误时,这通常意味着您没有为递归方法正确编写不变量,并且 ruby​​ 被卡住了,无限期地递归调用该方法,填满分配的内存用于堆栈。

长话短说; 这是一个无限循环。

这正是您遇到的情况,除了您没有显式递归调用 method_missing,而是隐式 调用它。 您可能调用了 method_missing 中不存在的方法。检查该方法是否存在。

具体来说,方法 respond_to 不存在,我想你的意思是 respond_to?

关于ruby - method_missing 中的堆栈级别太深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733869/

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