【问题标题】:Ruby I/O programming about a unless loopRuby I/O 编程关于一个除非循环
【发布时间】:2021-04-18 12:29:08
【问题描述】:

作为来自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?

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

【问题讨论】:

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

标签: ruby io


【解决方案1】:

unlessif 的负数。它不会循环。

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

【讨论】:

  • 一百万谢谢你!我刚开始学习编程,对这些基本概念知之甚少。现在我明白了“直到”和“除非”之间的区别。
猜你喜欢
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
  • 2011-10-25
  • 2013-06-15
  • 2020-03-08
相关资源
最近更新 更多