ruby如何做+运算符?

Ash*_*arS 2 ruby increment operators post-increment

Ruby不支持递增变量variable++.我看到这种行为:

2 ++ 4
Run Code Online (Sandbox Code Playgroud)

6.事实上,+两个变量之间的任何数字都被视为一个单一的+.ruby如何管理?而且由于红宝石这样做,它可以被视为++操作员不可用的原因吗?

mu *_*ort 9

这个:

2 ++ 4
Run Code Online (Sandbox Code Playgroud)

被解析为:

2 + (+4)
Run Code Online (Sandbox Code Playgroud)

所以第二个+是一元加.添加更多优点只会增加更多的一元运算+符:

2 ++++++ 4
Run Code Online (Sandbox Code Playgroud)

被视为:

2 + (+(+(+(+(+(+4))))))
Run Code Online (Sandbox Code Playgroud)

如果您提供以下+@方法Fixnum:

class Fixnum
  def +@
    puts 'unary +'
    self
  end
end
Run Code Online (Sandbox Code Playgroud)

然后你甚至可以看到它发生:

> 2 ++ 4
unary +
 => 6 
Run Code Online (Sandbox Code Playgroud)