关于 unless 循环的 Ruby I/O 编程

Ruby I/O programming about a unless loop

提问人:Risto Libera 提问时间:1/13/2021 最后编辑:troyRisto Libera 更新时间:1/13/2021 访问量:86

问:

作为 http://ruby.bastardsbook.com/chapters/io/ 的教程

file = File.open("sample.txt", 'r')
while !file.eof?
   line = file.readline
   puts line
end

这个方法把每一行,但是当我替换

while !file.eof?  

unless file.eof?

循环只运行一次,为什么呢?

红宝石 io

评论

0赞 Cary Swoveland 1/14/2021
请注意,传统的写作方式是.除其他事项外,IO::foreach 会在返回之前关闭文件。(您的代码需要在最后。你可以写 ,而不是因为 。文档中的注释,在没有块的情况下调用时返回枚举器。这允许您将其链接到方法(例如,,这可能很有用。File.foreach("sample.txt"') { |line| puts line }file.closeFile.foreach...IO.foreach...File.superclass #=> IOforeachEnumerableFile.foreach(fname).with_object({}) { |line,h| .... }

答:

8赞 Tom Lord 1/13/2021 #1

除非是 的负等价物。它不会循环。if

您要查找的关键字大概是 until - 这是 的反 ,因此确实执行了循环。while

评论

1赞 Risto Libera 1/13/2021
一百万谢谢你!我刚开始学习编程,对这些基本概念知之甚少。现在我明白了“直到”和“除非”之间的区别。