From: "T.Y" Date: 2005-11-07T12:13:19+09:00 Subject: [ruby-list:41497] Re: Matrixの継承について るびきち様、まつもと様 ご教示ありがとうございました。 Sun, 6 Nov 2005 22:03:35 +0900  rubikitch wrotes : > Rubyの場合、無理に継承を使う必要はありません。 > どういう目的でしょうか? エルミート行列で表現される演算子のクラスを作ろうとしていて、 メソッドと定数をMatrixに追加したかったのが主な目的です。 is_a Matrix として継承が自然かなと思ったのですが、まつもとさんが 書かれたように、サブクラスを作ることが想定されていないクラスも あるので、継承は慎重に使わないといけないのですね。 > new_method_for_yamatrix を導入するだけなら、Matrixに追加するか、 > moduleを作ってincludeしてしまえばいいです。 確かにMatrix自体に追加しても実際は問題ないと思いますので、 とりあえずそのように実装してみます。 ただ、今後メソッドをオーバーライドしたくなったとき、添付ライブラリ 既存クラスの動作を変更するのは嫌だったということはあります。 > もし、特定の行列のみ new_method_for_yamatrix メソッドを持たせたければ、 > extendしてしまいましょう。 Matrixは数みたいなものなので、特異メソッドを持たせるには 抵抗があったのでした。 Date: Mon, 7 Nov 2005 07:33:03 +0900 Yukihiro Matsumoto wrotes : > |def Matrix.identity(n) > | self.scalar(n, 1) > |end > | > |では不都合があるのでしょうか?そのようになっていれば、私の > |意図するように振る舞ってくれると思うのですが。 > > 一見なさそうに思いますが、本当にないかどうかは検証してみない > と分かりません。作者の石塚さんが同意すれば直すのは可能だと思 > います。 今の仕様で困っている方はあまりおられないのでしょうが、 何かの折にご検討頂けたら嬉しいです。 吉田