作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有以下 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/
我是一名优秀的程序员,十分优秀!