我不习惯Ruby中的复杂类。我读了doc,但我不知道如何修改这样一个复数的实数或虚数部分。没有提供修改这些字段的访问器。如何在Ruby中修改复数的实部或虚部?
C =复合物(1,2) c.real = 4#不可能的,因为是
我的问题是:如何修改在红宝石复数的实部或虚部?
我特别认为基于open class的解决方案应该是可行的吗?
我不习惯Ruby中的复杂类。我读了doc,但我不知道如何修改这样一个复数的实数或虚数部分。没有提供修改这些字段的访问器。如何在Ruby中修改复数的实部或虚部?
C =复合物(1,2) c.real = 4#不可能的,因为是
我的问题是:如何修改在红宝石复数的实部或虚部?
我特别认为基于open class的解决方案应该是可行的吗?
您必须创建一个新的复数:
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)
c = Complex(4, c.imaginary)
如果你做一个
c.methods - 1.methods # => [:marshal_dump, :marshal_load]
你可以看到一个复数有什么样的方法,其正常的整数没有。这是唯一的两个,他们显然不会让你设定真实的部分,这意味着你不能仅仅创建一个新的部分。您当然可以通过对其进行算术运算来更改数字,但是如果您想显式设置实部,则重新分配变量是唯一的方法。
您可以随时创建一个新的复数。 –