学习编程(Chris Pine)回答解释

时间:2016-02-27 19:21:54

标签: ruby

第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

提前致谢!

2 个答案:

答案 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循环条件将失败并且循环停止。