为什么这个与符号相关的ruby代码会导致无限循环

时间:2015-01-26 02:14:50

标签: ruby

我正在尝试使用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

3 个答案:

答案 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)