作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我知道三重循环的想法会给一些人带来恐惧,但我有一个具有以下结构的代码:
paragraph.split(/(\.|\?|\!)[\s\Z]/).each do |sentence|
myArrayOfFiles.each_with_index { |ma,j|
ma.each_with_index { |word,i|
sentence.gsub!(...)
}
}
end
两个外部循环按预期运行,但由于某种原因,内部循环仅运行第一个句子
。你知道这是为什么吗?我怎样才能使内部循环也遍历所有 sentence
?
我在 Ruby 1.8.7 上运行,并且只使用 each
循环尝试了上面相同的代码并得到了相同的结果。有什么想法吗?
编辑:
myArrayOfFiles
是一个由以下内容填充的数组:
AFile = File.open("A.txt")
BFile = File.open("B.txt")
myArrayOfFiles << [Afile,BFile]
myArrayOfFiles.flatten!
最佳答案
您的问题是 myArrayOfFiles
包含 File 实例。当您使用 ma.each_with_index
遍历您的一个文件时,它将逐行遍历文件并在 EOF 处停止。然后,您尝试用下一个 sentence
再次迭代,但是 File 已经在 EOF 处,所以 ma.each_with_index
没有什么可以迭代的,也没有任何有趣的事情发生。您需要调用rewind
在您再次尝试 each_with_index
它们之前将文件移回开头:
paragraph.split(/(\.|\?|\!)[\s\Z]/).each do |sentence|
myArrayOfFiles.each_with_index do |ma, j|
ma.rewind # <------------------------- You need this
ma.each_with_index do |word, i|
sentence.gsub!(...)
end
end
end
关于ruby - 三环 ruby ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9051274/
我知道三重循环的想法会给一些人带来恐惧,但我有一个具有以下结构的代码: paragraph.split(/(\.|\?|\!)[\s\Z]/).each do |sentence| myArr
我是一名优秀的程序员,十分优秀!