抱歉新手问题。是否将.txt文件加载到以下代码中:
line_count = 0
File.open("text.txt").each {|line| line_count += 1}
puts line_count
在将值传递给代码块之前,.each只是读到一行的结尾吗?很少解释会很棒。谢谢!
答案 0 :(得分:1)
你可以使用.each_line更明确,但是,http://www.ruby-doc.org/core-2.0.0/IO.html#method-i-each每个都读一行。
f = File.new("testfile")
f.each {|line| puts "#{f.lineno}: #{line}" }
答案 1 :(得分:1)
阅读文档非常重要非常重要,因为那里解释了各种各样的事情。例如,the documentation for each
说:
为ios中的每一行执行块,其中行由sep分隔。
sep
表示“\ r”,“\ n”或“\ r \ n”,具体取决于运行代码的操作系统,它也是特殊$/
全局变量的值其中包含该操作系统的默认行结束符。如果您知道该文件使用其他内容,则可以告诉Ruby为行结束/分隔符使用不同的值。
关于您的代码:
我这样做:
line_count = 0
File.foreach("text.txt") do |line|
line_count += 1
end
puts line_count
foreach
非常不言自明,在编写代码时很重要。您希望它尽可能地自我记录。 foreach
遍历文件中的“each”行。它还假设行尾与$/
相同,但您可以强制它为不同的东西,可能是字母“z”或“。”。或“”,取决于你当时的心血来潮和幻想。