给出以下代码:
File.open('file1.txt', 'r') do |file|
while line = file.gets
puts "** " + line.chomp.reverse + " **"
end
end
我很困惑被问到的问题是什么?这是我从教程中得到的一段简单的代码,它读取文件的行并将其删除。我确实理解了大部分内容,我相信你正在为line
的返回值分配变量file.gets
,并且它会检索这些行的值,然后将其输出。
我遇到问题的地方是初始循环语句:while line = file gets
我的问题是你问的是什么样的问题以及它是如何突破循环的?
即:x=3 x ==3
- >您要求的是X等于3,如果为true将返回true
,如果为false将返回false
。
另外,除了将它放在while语句中之外,您是否同时将file.gets
的返回值分配给变量line
?
答案 0 :(得分:1)
在Ruby中,一切都评估为真实或虚假。
有两件可疑的事情:
false
while
其他一切都是真的。
line
循环检查nil
变量的真实性。
除了false
或file.gets
之外,它都会循环。
在您的示例中,当nil
返回{{1}}时,循环将停止,这意味着没有下一行。
答案 1 :(得分:1)
while
使用变量line
作为条件会发生什么。在line = file.gets
检查条件之前分配while
。此外,while
知道如何摆脱循环,因为在EOF file.gets
返回nil
- false
- y。