我对此代码感到困惑(来自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
函数的作用是什么?我无法在任何地方找到它的定义,这是我能找到它的唯一例子。
答案 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)
=>将在goodAnswer
为false
时运行循环,并在true
变为{{1}}后立即停止。