Ruby の Complex クラスに慣れていません。ドキュメントを読みましたが、そのような複素数の実部または虚部を変更する方法がわかりません。これらのフィールドを変更するためのアクセサーは提供されていません。
c=Complex(1,2) c.real= 4 # このままでは無理
だから私の質問は: Ruby で複素数の実部または虚部を変更する方法は?
特に、オープンクラスに基づくソリューションは可能だと思いますか?
c = Complex(4, c.imaginary)
あなたがする場合
c.methods - 1.methods # => [:marshal_dump, :marshal_load]
通常の整数にはなく、複素数にはどのようなメソッドがあるかがわかります。これらは 2 つだけであり、明らかに実際の部分を設定することはできません。つまり、新しい部分を作成する以外に、実際の部分を設定することはできません。もちろん、算術演算を実行して数値を変更することもできますが、実数部を明示的に設定したい場合は、変数を再割り当てするしか方法はありません。
例を次に示します。
c = Complex(2, 3)
# incrementing the real part:
c + 2
=> (4+3i)
# incrementing the imaginary part:
c + Complex(0,2)
=> (2, 5i)
数値を変更することはできませんが、それに基づいて新しい数値を作成し、結果を同じ変数に割り当てることができます。
c = Complex(1, 2)
c = Complex(4, c.imaginary)
c # => (4+2i)
新しい複素数を作成する必要があります。
c = Complex(1, 2)
c = Complex(2, c.imag)