我不知道为什么这个递归方法返回NoMethodError: undefined method '[]' for nil:NilClass
递归方法返回未定义的方法“[]”
def test_method(a, b)
(a[0] == b[0] ? 0 : 1) + test_method(a[1..-1], b[1..-1])
end
编辑:我在字符串发送的参数进行比较。
我不知道为什么这个递归方法返回NoMethodError: undefined method '[]' for nil:NilClass
递归方法返回未定义的方法“[]”
def test_method(a, b)
(a[0] == b[0] ? 0 : 1) + test_method(a[1..-1], b[1..-1])
end
编辑:我在字符串发送的参数进行比较。
事实上,在同一时间,它会降低空字符串,然后到零。然后导致NoMethodError:undefined方法'[]'为nil:NilClass。
像这样的事情正在发生:
'ss'[1..-1] => 's'
'ss'[1..-1][1..-1] => ""
'ss'[1..-1][1..-1][1..-1] => nil
既然你遍历一个更小的阵列/串/不管,你必须考虑达到它的结束。我不知道你要完成什么,但是这至少可以阻止它被炸毁:
def test_method(a, b)
return 0 if a.nil? || b.nil?
(a[0] == b[0] ? 0 : 1) + test_method(a[1..-1], b[1..-1])
end
你发送了什么参数到这个方法来获得这个异常? –
我在发送字符串来比较它们。 – Fralcon