1

我对这段代码感到困惑(来自 Chris Pine 的 Learn to Program,第 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) variable(goodAnswer) is (not) false (ie, true), continue this loop”。但恰恰相反:一旦变量 ( goodAnswer) 为真,循环就会中断。

所以我很好奇,这个not函数到底是做什么的?我在任何地方都找不到它的定义,这是我能找到的唯一使用它的例子。

4

3 回答 3

2

它的意思大致是它所说的:

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

(即,whilegoodAnswer是错误的)。

于 2013-10-03T16:31:28.740 回答
1

第一:not不是方法,而是关键字。文档解释了它是什么:

not

布尔否定。

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

效果与否定 bang ( !) 类似,但优先级较低:

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

(一元的!不同之处还在于它可以被覆盖。)

于 2013-10-04T02:36:23.947 回答
0

实际上,您假设它与实际情况相反。

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

如此自然

while (not goodAnswer)goodAnswer=> 将在is 时运行循环false,它会在它一转时停止true

于 2013-10-03T16:33:32.100 回答