【发布时间】:2011-04-09 07:14:39
【问题描述】:
前/后递增/递减运算符(++ 和--)是非常标准的编程语言语法(至少对于过程和面向对象的语言)。
为什么 Ruby 不支持它们?我知道你可以用+= 和-= 完成同样的事情,但是排除这样的事情似乎有点奇怪,特别是因为它是如此简洁和传统。
例子:
i = 0 #=> 0
i += 1 #=> 1
i #=> 1
i++ #=> expect 2, but as far as I can tell,
#=> irb ignores the second + and waits for a second number to add to i
我知道Fixnum 是不可变的,但如果+= 可以实例化一个新的Fixnum 并设置它,为什么不对++ 做同样的事情?
包含= 字符的作业的一致性是唯一原因,还是我遗漏了什么?
【问题讨论】:
-
此类运算符的 Grep ruby 源代码。如果没有 - Matz 不喜欢他们。
-
您不能使用
+=运算符进行预增量。在 C 语言中,我尝试仅在条件句中使用++/--,而更喜欢在基本语句中使用更字面的+=/-=。可能是因为我学了 Python(虽然在 C 之后很久......) -
昨天不是有这样的 Python 问题吗?
-
@Eimantas 显然该语言的创建者不喜欢他们。这太常见了,不容忽视。我想知道为什么,下面的答案已经澄清了这一点。
-
我认为这(几乎)是一个典型的 SO 问题。获得深思熟虑的答复并不是一件不容易的事情。需要什么答案非常明确和具体,并且答案揭示了编程的一个方面,可以使人们思考的范围更广,而不仅仅是问题的核心。
标签: ruby operators language-design