“不”方法有什么作用?

时间:2013-10-03 16:27:26

标签: ruby methods

我对此代码感到困惑(来自Chris Pine的学习计划,第8章:编写自己的方法)。

goodAnswer = false
while (not goodAnswer)
  puts 'Do you like eating chimichangas?'
  answer = gets.chomp.downcase
  if (answer == 'yes' or answer == 'no')
    goodAnswer = true
  else
    puts 'Please answer "yes" or "no".'
  end
end

我特别被方法not弄糊涂了。我认为这意味着“(while)变量(goodAnswer)是(不)假(即,真),继续这个循环”。但恰恰相反:一旦变量(goodAnswer)为真,循环就会中断。

所以我很好奇,not函数的作用是什么?我无法在任何地方找到它的定义,这是我能找到它的唯一例子。

3 个答案:

答案 0 :(得分:2)

这大致意味着:

“虽然这不是一个好的答案”

(即,goodAnswer为假)。

答案 1 :(得分:1)

首先:not 不是方法,它是关键字。 The docs解释它是什么:

  

not

     

布尔否定。

not true    # false
not 10      # false
not false   # true
     

与否定爆炸(!)类似,但优先级较低:

not 3 == 4  # true; interpreted as not (3 == 4)
!3 == 4     # false; interpreted as (!3) == 4, i.e., false == 4
     

(一元!也有所不同,因为它可以被覆盖。)

答案 2 :(得分:0)

实际上你假设它与它的相反。

while (goodAnswer) => goodAnswer为真时将运行循环

如此自然

while (not goodAnswer) =>将在goodAnswerfalse时运行循环,并在true变为{{1}}后立即停止。