第7章,本章末尾的第一次练习(电子书) - > https://pine.fm/LearnToProgram/chap_07.html
我能够获得代码,但只有一次我设置了一个变量并将其设置为等于某个变量。我真的不明白为什么,并希望得到任何解释为什么你必须这样做。
这是我的代码:
puts "Tell me some of your favorite words-- one at a time, please!"
fave_words = []
word = '0'
while word != ''
word = gets.chomp
fave_words.push word
end
puts "Here are a few of your favorite words..."
puts fave_words.join(' ')
puts "Now in alphabetical order..."
puts fave_words.sort
提前致谢!
答案 0 :(得分:1)
循环工作的条件(并且主要是第一次进入它)是具有不同于空字符串的值的单词。因此,如果您将其设为word = '0'
或word ='any other string'
,则无关紧要。只要您将其设置为与''
不同的值,循环子句将评估为true
并且循环将开始。只要你提供非空输入,它就会保留在循环中,因为该子句将继续评估为true
。
实际上你甚至不需要在循环之外声明一个变量。你可以这样做:
while true
word = gets.chomp
break if word.empty?
fave_words.push word
end
所以循环立即开始,因为eval(true)
是真理。循环将继续运行,直到您的输入为空字符串,这是我们打破循环的条件。
答案 1 :(得分:0)
word
始终是用户的输入,只要它是非空字符串,while
循环就起作用。为了使滚球word
在循环外定义并设置为非空字符串,因此循环执行。
当用户仅通过按enter
输入任何内容时,while
循环条件将失败并且循环停止。