ruby - ruby 是如何做 + 运算符的?

标签 ruby operators increment post-increment

Ruby 不支持像variable++ 这样的自增变量。我看到了这种行为:

2 ++ 4

给出 6。事实上,两个变量之间的任意数量的 + 符号都被视为一个单独的 +。 ruby 是如何做到的?由于 ruby​​ 这样做,是否可以将其视为 ++ 运算符不可用的原因?

最佳答案

这个:

2 ++ 4

解析为:

2 + (+4)

所以第二个 + 是一元加号。添加更多加号只会添加更多一元 + 运算符,因此:

2 ++++++ 4

被视为:

2 + (+(+(+(+(+(+4))))))

如果您在 Fixnum 中提供您的 +@ 方法:

class Fixnum
  def +@
    puts 'unary +'
    self
  end
end

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

> 2 ++ 4
unary +
 => 6 

关于ruby - ruby 是如何做 + 运算符的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523329/

相关文章:

默认值的 Ruby 习语

C++,错误 : "no operator " == "matches these operands ", ostream/istream

python - 'for' 循环中的 i = i + 1 和 i += 1 有什么区别?

javascript - 如何每 12 次递增并使用对象文字和 while 循环保持运行总计?

ruby-on-rails - Rails 方法返回当前 "controller#action"?

ruby-on-rails - Rails 3.1 引擎迁移不起作用

c# - 为什么是 '&&' 而不是 '&' ?

vue.js - Vue js增量运算符(++)没有给出预期的输出

Javascript (Jquery), increment/decrement++/-- operator 计算错误

ruby - 命名空间内的 Mongoid 文档