2016-07-26 85 views
1

目標:使用odds數組上的.each方法來打印出數組中每個項目的值的兩倍。換句話說,將每個項目乘以2.Ruby語法混淆括號和散列

確保使用print而不是puts,因此您的輸出顯示在一行上。

code: 

odds = [1,3,5,7,9] 

odds.each do |x| 
    x *= 2 
    print "#{x}" 
end 

做這個運動的Codecademy網站,我比較困惑的語法爲什麼需要有一個#{}周圍的X,爲什麼不能把它僅僅是:打印「X」或打印# x「。哈希和括號的作用是什麼?它讓我困惑,爲什麼由於被引號包圍,ruby沒有打印出」#{X}「而不是」x「數字乘以2?練習還包括哈希和大括號#{user_input},其中控制檯打印我們輸入的任何內容,而不是打印出「#{用戶輸入}」本身。

+0

一個「井號標籤」是不是一個符號。這是ruby中不存在的twitter語義。 – xaxxon

+0

'odds.each {| x |放x * 2}'完美無缺。根本不需要字符串插值。 – spickermann

回答

0

您不能執行print "x"並且期望它輸出x object。如果你想要的話打印x字母?所以,我們需要插值。 但是,以這種方式使用的插值僅具有使x成爲字符串的副作用。你可以做同樣的無插值:

print x

不管怎樣,我可能會做

odds = [1,3,5,7,9] 
odds.each { |x| print x * 2 } 

關於插補:你可以使用它時,你應該連接幾個字符串,這將是醜陋的。例如

​​

我更喜歡後者