如何在Ruby中修改复数的实部或虚部?

时间:2012-10-31 08:19:54

标签: ruby

我不熟悉Ruby中的Complex类。我读了doc,但我无法想象如何修改这样一个复数的实部或虚部。未提供修改这些字段的访问者。

C =复合物(1,2) c.real = 4#不可能

所以我的问题是:如何在Ruby中修改复数的实部或虚部?

我特别认为基于公开课的解决方案应该是可行的吗?

4 个答案:

答案 0 :(得分:2)

c = Complex(4, c.imaginary)

如果你做了

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

您可以看到普通整数没有的复数的方法。这是唯一的两个,他们显然不会让你设置真正的部分,这意味着除了创建一个新的,你不能做到这一点。您当然可以通过对其进行算术运算来更改数字,但如果您想明确设置实部,则重新分配变量是唯一的方法。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

您必须创建一个新的复数:

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

答案 3 :(得分:1)

以下是一个例子:

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

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