我正在尝试使用ruby koan并发现此代码导致无限循环 - 会理解为什么无限循环发生的一些指示:
def test_constants_become_symbols
all_symbols_as_strings = Symbol.all_symbols.map { |x| x.to_s }
assert_equal false, all_symbols_as_strings.include?(test_constants_become_symbols)
end
答案 0 :(得分:6)
这是infinite recursion,因为在这一行:
assert_equal false, all_symbols_as_strings.include?(test_constants_become_symbols)
再次调用test_constants_become_symbols
方法,再次运行该行 ,依此类推,直到堆栈太深。
答案 1 :(得分:1)
test_constants_become_symbols
在最后一行调用自己。没有停止条件。
答案 2 :(得分:1)
您以递归方式调用test_constants_become_symbols函数: assert_equal false,all_symbols_as_strings.include?(test_constants_become_symbols)