はじめまして。吉田と申します。 先月頃からRuby(1.8.3 linux)を趣味で使い始めました。 現在、下のような感じで、標準添付ライブラリのmatrix.rbにある Matrixクラスを継承したクラスを作ろうとしているのですが、 require 'matrix' class YaMatrix < Matrix def new_method_for_yamatrix end end コンストラクタの動作が下のようになり戸惑っています。 m = YaMatrix.identity(2) p(m.class) => Matrix # YaMatrixになってほしい m = YaMatrix[[1,0],[0,1]] p(m.class) => YaMatrix # これはOK 私はRubyの流儀がよく分かっていませんので、これが仕様なのか 判断できません。御存じの方から何かアドバイスを頂ければ幸いです。 ちなみに、 matrix.rb中で、 def Matrix.identity(n) Matrix.scalar(n, 1) end のような箇所がいくつかありますが、 def Matrix.identity(n) self.scalar(n, 1) end では不都合があるのでしょうか?そのようになっていれば、私の 意図するように振る舞ってくれると思うのですが。