Ruby 中没有增量运算符 (++)?

发布于 2024-09-19 08:47:02 字数 439 浏览 3 评论 0原文

可能的重复:
为什么 Ruby 不支持 i++ 或 i— 作为 fixnum?< /a>

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

例如

i++
++i

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

Possible Duplicate:
Why doesn't Ruby support i++ or i— for fixnum?

Why is there no increment operator in Ruby?

e.g.

i++
++i

Is the ++ operator used for something else? Is there a real reason for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜宝宝 2024-09-26 08:47:02

Ruby 没有前/后递增/递减运算符。例如,x++x-- 将无法解析。更重要的是, ++x--x 不会执行任何操作!事实上,它们的行为就像多个一元前缀运算符: -x == ---x == -----x == ...... 要递增数字,只需编写 <代码>x += 1。

摘自《Ruby 新手应该知道的事情》
" (存档mirror

这比我能更好地解释它。

编辑:和来自语言作者本人的原因(

  1. ++ 和 -- 不是 Ruby 中的保留运算符。
  2. C 的递增/递减运算符实际上是隐藏赋值。它们影响变量,而不是对象。您无法通过方法完成分配。 Ruby 使用 +=/-= 运算符来代替。
  3. self 不能作为赋值目标。此外,更改整数 1 的值可能会导致整个程序严重混乱。

Ruby has no pre/post increment/decrement operator. For instance, x++ or x-- will fail to parse. More importantly, ++x or --x will do nothing! In fact, they behave as multiple unary prefix operators: -x == ---x == -----x == ...... To increment a number, simply write x += 1.

Taken from "Things That Newcomers to Ruby Should Know
" (archive, mirror)

That explains it better than I ever could.

EDIT: and the reason from the language author himself (source):

  1. ++ and -- are NOT reserved operator in Ruby.
  2. C's increment/decrement operators are in fact hidden assignment. They affect variables, not objects. You cannot accomplish assignment via method. Ruby uses +=/-= operator instead.
  3. self cannot be a target of assignment. In addition, altering the value of integer 1 might cause severe confusion throughout the program.
眼波传意 2024-09-26 08:47:02

来自 Matz 的帖子

(1) ++ 和 -- 不保留
Ruby 中的运算符。

(2) C 的递增/递减
运算符实际上是隐藏的
任务。
它们影响变量,而不是对象。你无法完成
通过方法赋值。 Ruby 使用 +=/-= 运算符来代替。

(3) self 不能成为以下对象的目标
任务。此外,改变
整数 1 的值可能会导致严重的混乱
程序。

<预><代码> matz。

From a posting by Matz:

(1) ++ and -- are NOT reserved
operator in Ruby.

(2) C's increment/decrement
operators are in fact hidden
assignment.
They affect variables, not objects. You cannot accomplish
assignment via method. Ruby uses +=/-= operator instead.

(3) self cannot be a target of
assignment. In addition, altering
the value of integer 1 might cause severe confusion throughout
the program.

                      matz.
阳光①夏 2024-09-26 08:47:02

我认为这种表示法不可用,因为与 PHP 或 C 不同,Ruby 中的一切都是对象。

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

我不是 Ruby 或 RoR 程序员,所以我确信有人可以验证上述内容或纠正它(如果不准确)。

I don't think that notation is available because—unlike say PHP or C—everything in Ruby is an object.

Sure you could use $var=0; $var++ in PHP, but that's because it's a variable and not an object. Therefore, $var = new stdClass(); $var++ would probably throw an error.

I'm not a Ruby or RoR programmer, so I'm sure someone can verify the above or rectify it if it's inaccurate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文