复数文字

Complex number literal

复数可以写成这样:

3 + 2i # => (3+2i)

这在句法上与接收整数 3 接收带有参数 + 的方法 + 的情况有何区别(它本身作为复数的文字 (0+2i))?

简短回答:不是。它的工作方式是整数的+方法接收虚数单位和returns一个Complex。所以就文字而言,你有通常的整数和浮点数文字以及虚数文字(例如 2i),通过组合它们你可以构造复杂的值。

我猜文档有误导性,看起来是字面意思的实际上是方法调用。我做了一个实验来证实这一点:

class Integer
  alias old_plus +

  def +(*args)
    puts 'called with complex' if args.first.class == Complex
    old_plus(*args)
  end
end

8+3i
# called with complex
# => (8+3i)
(9+2i)
# called with complex
# => (9+2i)