复数字面积

问题描述 投票:2回答:2

一个复数可以写成这样的文字:

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

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

ruby literals complex-numbers
2个回答
6
投票

简短回答:事实并非如此。它的工作方式是整数的+方法接收虚数单位并返回Complex。因此,在文字方面,你有通常的整数和浮点文字以及虚数字文字(例如2i),通过组合它们,你可以构造复数值。


3
投票

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.