关于除非循环的 Ruby I/O 编程

Ris*_*era 1 ruby io

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

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

这种方法把每一行,但是当我更换

while !file.eof?  
Run Code Online (Sandbox Code Playgroud)

unless file.eof?
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*ord 8

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

您正在寻找的关键字大概是until- 这是 的倒数while,因此确实执行了循环。