Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么在这个While循环示例中答案变量是?_Ruby - Fatal编程技术网

Ruby 为什么在这个While循环示例中答案变量是?

Ruby 为什么在这个While循环示例中答案变量是?,ruby,Ruby,我第一次学习ruby和计算机科学。我正在阅读Chris Pine的《学会编程》一书,并对一个例子提出了一个问题 代码如下: def ask(question) # new method with paramater question while true # starts a loop puts question # p

我第一次学习ruby和计算机科学。我正在阅读Chris Pine的《学会编程》一书,并对一个例子提出了一个问题

代码如下:

def ask(question)                           # new method with paramater question
  while true                                # starts a loop
    puts question                           # puts the question on the screen
    reply = gets.chomp.downcase             # gets the question and makes it lower case

    if (reply == "yes" || reply == "no")    # if reply was yes or no 
      if reply == "yes"                     # nested if statement if yes answer == true
        answer = true                       # WHAT??
      else                                  # the else of the second if
        answer = false                      # WHAT?? why do we care about answer??
      end
      break                                 # Breaks the Loop
    else                                    # the else of the 1st if 
      puts ' Please answer "yes" or "no".'
    end
  end
  answer                                    # Why is answer here?
end

我的问题是为什么我们需要答案?我看不出它对循环有什么影响。while循环被设置为true not answer。

Ruby返回它执行的最后一条语句。实际上,这和写作是一样的

return answer;

…使用C或Java之类的语言。

Ruby返回它执行的最后一条语句。实际上,这和写作是一样的

return answer;
end
 answer                                     #Why is answer here?
end
…使用C或Java之类的语言

end
 answer                                     #Why is answer here?
end
它用于从方法ask返回应答结果,无论是true还是false

我的问题是为什么我们需要答案

根据您的示例,需要答案来保存布尔值,该值将在方法执行完成时返回。您的while循环是一个无限循环,只有在reply的vlue为“yes”或“no”时,break语句才能中断该循环

它用于从方法ask返回应答结果,无论是true还是false

我的问题是为什么我们需要答案


根据您的示例,需要答案来保存布尔值,该值将在方法执行完成时返回。您的while循环是一个无限循环,只有break语句才能中断该循环,此时reply将有“yes”或“no”符。

谢谢!我明白了,但为什么我们真的关心这个呢?它不会影响我们的循环,是吗?还是真的?如果答案是肯定的,我们能得到答案=5吗?如果答案是否定的,我们能得到答案=4吗?我有点明白了。为什么不在循环外预定义answer=true,然后设置While answer现在为true?还有,在循环中,休息是什么?我以为这就是打破循环的原因?@Babai,虽然被接受,但你的回答是错误的。退出无限while循环不需要答案。这也可以通过直接返回true或false来实现,从而消除答案变量?这个答案怎么了?谢谢!我明白了,但为什么我们真的关心这个呢?它不会影响我们的循环,是吗?还是真的?如果答案是肯定的,我们能得到答案=5吗?如果答案是否定的,我们能得到答案=4吗?我有点明白了。为什么不在循环外预定义answer=true,然后设置While answer现在为true?还有,在循环中,休息是什么?我以为这就是打破循环的原因?@Babai,虽然被接受,但你的回答是错误的。退出无限while循环不需要答案。这也可以通过直接返回true或false来实现,从而消除答案变量?这个答案怎么了?下一个练习是用return替换答案。我只是想抓住答案的意义?我真的不知道它是如何连接或影响我的循环中的任何东西的?答案是否打破了我的while循环?或者这个中断打破了我的循环?@Codey:把答案放在方法的末尾与你的循环无关。中断就是打断你的循环,让你得到答案——我重新格式化了你问题中的代码,以直观地强调这一点。Ruby的默认行为是返回方法中计算的最后一个表达式的值,因此不需要显式返回。。。在许多其他语言中都可以找到的语句。当最后一个表达式是answer时,answer的当前值将成为askquestion方法的返回值。下一个练习是用return替换answer。我只是想抓住答案的意义?我真的不知道它是如何连接或影响我的循环中的任何东西的?答案是否打破了我的while循环?或者这个中断打破了我的循环?@Codey:把答案放在方法的末尾与你的循环无关。中断就是打断你的循环,让你得到答案——我重新格式化了你问题中的代码,以直观地强调这一点。Ruby的默认行为是返回方法中计算的最后一个表达式的值,因此不需要显式返回。。。在许多其他语言中都可以找到的语句。当最后一个表达式为answer时,answer的当前值将成为askquestion方法的返回值。