2016-02-27 26 views
1

第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

你的問題是什麼? – NickLamp

+0

爲什麼我需要設置word等於某事(word ='0') – cleverettgirl

+1

沒有它,你會收到一個'NameError',抱怨你引用了一個未定義的局部變量或方法'word''' – Stefan

回答

0

word始終是來自用戶的輸入,只要它是一個非空字符串的循環函數即while。爲了獲得滾動word在循環的外部定義並設置爲非空字符串,因此循環執行。

當用戶單獨按enter單獨輸入時,while循環條件失敗,循環停止。

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)是真理。循環將繼續下去,直到你的輸入是一個空字符串,這是我們打破循環的條件。