我不知道爲什麼這個遞歸方法返回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