可能的重复: 为什么Ruby不支持i++或i -的fixnum?

为什么Ruby中没有增量运算符?

e.g.

i++
++i

++运算符是否用于其他用途?这有什么真正的原因吗?


Ruby没有前后递增/递减操作符。例如,x++或x——将无法解析。更重要的是,++x或——x将什么都不做!实际上,它们表现为多个一元前缀运算符:-x ==——x == -----x == ......要增加一个数字,只需写x += 1。

摘自《Ruby新手应该知道的事情》 (档案,镜像)

这比我能解释得更清楚。

编辑:以及语言作者自己的原因(来源):

++和——在Ruby中不是保留操作符。 C语言的自增/自减操作符实际上是隐藏赋值。它们影响变量,而不是对象。你不能通过方法完成任务。Ruby使用+=/-=运算符代替。 Self不能成为赋值的目标。此外,改变整数1的值可能会在整个程序中引起严重的混乱。


Matz在帖子中写道:

(1) ++和——不保留 Ruby中的运算符。 (2) C的增量/减量 操作符实际上是隐藏的 任务。 它们影响变量,而不是对象。你无法完成 通过方法赋值。Ruby使用+=/-=运算符代替。 (3)自我不能成为目标 任务。另外,改变 整数1的值可能会导致严重的混乱 程序。 马。


我不认为这种表示法是可行的,因为与PHP或c语言不同,Ruby中的所有东西都是对象。

当然,你可以使用$var=0;PHP中的$ vvar++,但那是因为它是变量而不是对象。因此,$var = new stdClass();$var++可能会抛出一个错误。

我不是Ruby或RoR程序员,所以我相信有人可以验证上面的内容,或者在不准确的情况下纠正它。