循环中的Ruby布尔赋值运算符

时间:2016-11-01 20:16:43

标签: ruby loops

给出以下代码:

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

2 个答案:

答案 0 :(得分:1)

在Ruby中,一切都评估为真实或虚假。

有两件可疑的事情:

  • false
  • while

其他一切都是真的。

line循环检查nil变量的真实性。

除了falsefile.gets之外,它都会循环。

在您的示例中,当nil返回{{1}}时,循环将停止,这意味着没有下一行。

答案 1 :(得分:1)

while使用变量line作为条件会发生什么。在line = file.gets检查条件之前分配while。此外,while知道如何摆脱循环,因为在EOF file.gets返回nil - false - y。