0

有人可以解释一下为什么这段代码不起作用吗?我对红宝石还不是很了解,所以希望你能提供帮助。它说我有语法错误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
4

2 回答 2

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"
于 2013-10-20T19:02:07.600 回答
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),另一个用于相应元素的索引(此处,i

继续揉。:)

于 2013-10-20T19:19:44.980 回答