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'。 –