中田さん、お答えありがとうございます。 >Vectorを作った後でcomplex.rbがロードされることも考えられるので、 >初期化時点で決定するのは望ましくないような気がします。 ということは、inner_productメソッドの定義のはじめに @comp = defined?(Complex) if !@comp といった処理を書くべきでしょうか。 >Complexが有効かどうかなら defined?(Complex) で、Numericに >conjugateが定義されているかどうかなら 0.respond?(:conjugate) か >defined?(0.conjugate) あたりで調べたほうがいいと思います。 了解しました。 >Complexにはabs2というメソッドがあるので、Numericにも self*self >という形でabs2が定義されていれば これは、matrix.rbに class Numeric def abs2 self * self end end を追加すればよい、ということでしょうか。 以上、よろしくお願いします。 田中 健太(TANAKA Kenta) 論理によって証明し、直感によって考え出す。