Ruby如果Elsif Else阻止语法

Oma*_*ish 2 ruby if-statement

这个街区出了什么问题?

if item.nil?
   found = true
elsif item[:name] == name && item[:category] == category
   found = true
else
   i++
end
Run Code Online (Sandbox Code Playgroud)

当我进行语法检查时,我得到了

syntax error, unexpected keyword_end
Run Code Online (Sandbox Code Playgroud)

但如果我删除end然后我得到

syntax error, unexpected end-of-input
Run Code Online (Sandbox Code Playgroud)

Jor*_*ing 6

问题出在这里:

i++
Run Code Online (Sandbox Code Playgroud)

Ruby没有++运营商.你想要的是这个:

i += 1
Run Code Online (Sandbox Code Playgroud)

我认为这个特定错误的原因是Ruby将第二个解释+为一元运算+符,即"正数符号"(因为它是唯一在该上下文中有意义的东西),因此期望下一个令牌是数字,例如(为清晰起见括号):

i + (+5)
Run Code Online (Sandbox Code Playgroud)

...但是下一个标记是end错误的语法错误.

或其他响应+@方法的东西.