有人可以解释一下为什么这段代码不起作用?我对红宝石知之甚少,所以希望你能提供帮助。它说我在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
答案 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}})
继续擦。 :)