なかだです。 At Wed, 1 Oct 2003 14:59:55 +0900, TANAKA Kenta wrote: > 1) @comp = $".include?("complex.rb") はinitializeに書いてよいのか。 > 2) compは、インスタンス変数とすべきなのか。 Vectorを作った後でcomplex.rbがロードされることも考えられるので、 初期化時点で決定するのは望ましくないような気がします。 Complexが有効かどうかなら defined?(Complex) で、Numericに conjugateが定義されているかどうかなら 0.respond?(:conjugate) か defined?(0.conjugate) あたりで調べたほうがいいと思います。 > 3) inner_product, r内の if @comp 〜 else … では、〜と…はほとんど同じ > 処理で、美しくない。別の書き方はないのか。 > @comp ? v1.conjugate : v1なども考えたが、これはループごとに > @comp評価が起こり(?)、無駄である。 inner_productについてはとくに思い付かないのですが、rに関しては、 Complexにはabs2というメソッドがあるので、Numericにも self*self という形でabs2が定義されていれば v = 0 for e in @elements v += e.abs2 end Math.sqrt(v) あるいは Math.sqrt(@elements(0) {|v, e| v + e.abs2}) とできそうです。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦