2013-10-20 20 views
0

有人可以請解釋我爲什麼這段代碼不工作?我不真的知道很多有關紅寶石,所以希望你能幫助。它說,我已經在puts multi[is]語法錯誤:爲什麼從我的Ruby代碼中得到這個「語法錯誤,意外的tIDENTIFIER」錯誤消息?

syntax error, unexpected tIDENTIFIER, expecting keyword_do or '{' or '<' puts multi[is] 

下面的代碼:

 # multi = Array.new 
     # multi[0] = Array.new(2, 'hello') 
     # # multi[1] = Array.new(2, 'world') 
     # puts(multi[0]) 
     # puts(multi[1]) 

     multi = ['hest','hund','kat','fugl'] # names of animals 
     for i in multi # convert to 
      is = i.to_i 
      is++ 
      # puts(i. inspect 
      puts multi[is] # her i have error says syntax error, unexpected tIDENTIFIER, expecting keyword_do or '{' or '<' puts 
      multi[is] 
     end 


     food = Array.new # a new arry 

     # 0 milk names for food 
     # 1 ost 
     # 2 kod 
     # 3 ris 

回答

3

is++是一個導致錯誤。只要寫它is+=1。在紅寶石中沒有-- or ++運營商。

直接從文檔:

Ruby沒有預/後遞增/遞減操作。例如,x ++或x--將無法解析。更重要的是,++ x或--x將無能爲力!實際上,它們表現爲多個一元前綴運算符:-x == --- x == ----- x == ......要增加一個數字,只需寫入x + = 1。

我重新寫你的代碼進行一些修改:

multi = ['hest','hund','kat','fugl'] # names of animals 
index=-1 
for name in multi 
    p "#{name} at #{index+=1}" 
end 
# >> "hest at 0" 
# >> "hund at 1" 
# >> "kat at 2" 
# >> "fugl at 3" 
+0

謝謝,現在我看到就像是= = 1其中一個是動物名稱的地方,所以1就是尋找 – Mark

+0

@Mark我不知道你爲什麼寫了代碼,以及你將要做什麼的東西不是你的文章的一部分。我只是集中了爲什麼錯誤來了,並相應地試圖解決它。現在你可以隨心所欲地玩你的代碼。 –

+0

即時通訊這非常新,所以,沒有真正知道該怎麼發佈嘻,謝謝 – Mark

1

奧雅納已經回答了這個問題,但我希望到Rubyish色彩添加到您的代碼不遵循它的約定。

multi = ['hest','hund','kat','fugl'] # names of animals 

multi.each_with_index do |m, i| 
    puts "#{i+1} #{m}" 
end 

each_with_index是紅寶石枚舉其中提供了兩個塊變量,一個用於元件(這裏,m),一個用於相應的元素的索引(在此,i

保持rubying。 :)

+0

謝謝我看到:) – Mark

+0

* + 1 *爲教我們** Rubyish **的事情... :) –

相關問題