一个复数可以写成这样的文字:
3 + 2i # => (3+2i)
这在语法上如何区别于接收器整数3
接收方法+
与参数2i
(它本身作为复数(0+2i)
的文字)的情况?
简短回答:事实并非如此。它的工作方式是整数的+
方法接收虚数单位并返回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)