2012-10-31 25 views
0

我不習慣Ruby中的複雜類。我讀了doc,但我不知道如何修改這樣一個複數的實數或虛數部分。沒有提供修改這些字段的訪問器。如何在Ruby中修改複數的實部或虛部?

C =複合物(1,2) c.real = 4#不可能的,因爲是

我的問題是:如何修改在紅寶石複數的實部或虛部?

我特別認爲基於open class的解決方案應該是可行的嗎?

+0

您可以隨時創建一個新的複數。 –

回答

1

您必須創建一個新的複數:

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

您不能修改的次數,但您可以創建基於它的新的和分配結果相同的變量:

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

下面是一個例子:

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

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

如果你做一個

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

你可以看到一個複數有什麼樣的方法,其正常的整數沒有。這是唯一的兩個,他們顯然不會讓你設定真實的部分,這意味着你不能僅僅創建一個新的部分。您當然可以通過對其進行算術運算來更改數字,但是如果您想顯式設置實部,則重新分配變量是唯一的方法。