Ruby 为什么我的代码无限期地挂起?
我试图运行以下使用Nokogiri的代码,但是当它进入第161次迭代时,它就被卡住了。列表是解析文件后创建的一组节点 我想知道为什么会发生这种情况,可能是因为内存不足吗?如果它被无限期地悬挂,我还能检查什么呢Ruby 为什么我的代码无限期地挂起?,ruby,Ruby,我试图运行以下使用Nokogiri的代码,但是当它进入第161次迭代时,它就被卡住了。列表是解析文件后创建的一组节点 我想知道为什么会发生这种情况,可能是因为内存不足吗?如果它被无限期地悬挂,我还能检查什么呢 for i in 0...list.length puts i # puts list[i].inner_html while isReady(list[i]) list[i].inner_html = "#{list[i+1].inner_html}" lis
for i in 0...list.length
puts i
# puts list[i].inner_html
while isReady(list[i])
list[i].inner_html = "#{list[i+1].inner_html}"
list[i+1].remove
end
end
问题已解决我刚刚意识到列表[I+1]。删除并没有删除,这就是为什么它在while循环中无限期地挂起。谢谢您的建议。当调用i==list.length和list[i+1].remove()时会发生什么?这看起来很麻烦。当i==list.length,并且调用list[i+1].remove()时会发生什么?这看起来很麻烦。您需要为您正在做的事情提供更多的上下文。文件有多大?你想干什么?什么是
isReady()
,因为这就是循环,除非list.length大得离谱,或者list.length+运行isReady
的时间超过了你的耐心。完全同意提姆的说法。除此之外,将第一行更改为list.each|u index do | i |
。这更容易理解。你需要为你正在做的事情提供更多的背景。文件有多大?你想干什么?什么是isReady()
,因为这就是循环,除非list.length大得离谱,或者list.length+运行isReady
的时间超过了你的耐心。完全同意提姆的说法。除此之外,将第一行更改为list.each|u index do | i |
。这更容易理解。