如何修改Ruby中复数的真实或虚构部分



我不习惯在Ruby中复杂类。我阅读了文档,但我无法弄清楚如何修改如此复杂的数字的真实或虚构部分。未提供修改这些字段的登录器。

c =复杂(1,2)c.real = 4#不可能,

所以我的问题是:如何修改Ruby中复杂数字的真实或虚构部分?

i特别认为基于开放类的解决方案应该是可能的吗?

c = Complex(4, c.imaginary)

如果您做

c.methods - 1.methods  # => [:marshal_dump, :marshal_load]

您可以查看一个复杂数字具有哪些方法,而普通整数则没有。这些是唯一的两个,显然不会让您设置真实的部分,这意味着除了创建新的部分外,您根本无法做到这一点。当然,您可以通过对其进行算术操作来更改数字,但是如果要明确设置实际部分,重新分配变量是唯一的方法。

您将必须创建一个新的复杂号码:

c = Complex(1, 2)
c = Complex(2, c.imag)

您无法修改数字,但是您可以基于它创建新数,并将结果分配给同一变量:

c = Complex(1, 2)
c = Complex(4, c.imaginary)
c            # => (4+2i)

这是一个示例:

c = Complex(2, 3)
# incrementing the real part:
c + 2
=> (4+3i)
# incrementing the imaginary part:
c + Complex(0,2)
=> (2, 5i)

最新更新