1
我想執行以下代碼:堆棧層次過深:SystemStackError
class Array
def each
for i in self
yield(i)
end
end
end
[1,2,3,4].each {|i| puts i*i}
當我運行這段代碼我得到以下錯誤:
stack level too deep (SystemStackError)
但下面的代碼成功執行:
class Array
def each
yield(self[0])
yield(self[1])
yield(self[2])
yield(self[3])
end
end
[1,2,3,4].each {|i| puts i*i}
輸出:
1
4
9
16
我想這是因爲'對... in'使用'內部each'所以你正在創建遞歸。嘗試命名您的方法,以免與內置方法衝突。 –
是的,如果我把'each'改爲'aech' –
如果這個練習的要點是要學習如何自己實現'each',那麼你只是在作弊。你基本上只是再次調用內置的'each',只是僞裝成'for' /'in'。 –