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