为什么我从Ruby代码中收到此“语法错误,意外的tIDENTIFIER”错误消息?

时间:2013-10-20 18:57:12

标签: ruby

有人可以解释一下为什么这段代码不起作用?我对红宝石知之甚少,所以希望你能提供帮助。它说我在puts multi[is]

中有语法错误
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

2 个答案:

答案 0 :(得分:3)

is++导致错误。只需写下is+=1即可。在ruby中没有-- 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"

答案 1 :(得分:1)

Arup已经回答了这个问题,但我希望将 Rubyish 色调添加到您的代码中,而不遵循它的惯例。

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

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

each_with_index是Ruby 枚举器,它为您提供了两个块变量,一个用于元素(此处为m),另一个用于对应元素的索引(此处为{{ 1}})

继续擦。 :)