From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2010-01-27T17:27:58+09:00 Subject: [ruby-dev:40173] Re: three bugs of Matrix::Scalar けいじゅ@いしつかです. In [ruby-dev:40149] the message: "[ruby-dev:40149] three bugs of Matrix::Scalar", on Jan/26 00:21(JST) Yusuke ENDOH writes: >遠藤です。 > >Matrix::Scalar の定義に 3 つおかしいところを見つけました。 >nodoc なクラスですが、どれも単純な問題だと思うので報告します。 > > >○ WrongArgType が未定義 >$ ./ruby -rmatrix -e 'Matrix[[0]].coerce(1).first + Matrix[[0]]' >/home/mame/work/ruby/lib/matrix.rb:979:in `+': uninitialized constant >Matrix::Scalar::WrongArgType (NameError) > from -e:1:in `
' > >ただの定義忘れだと思います。 了解. その通りです >○ Matrix#powered_by が未定義 >$ ./ruby -rmatrix -e '2 ** Matrix[[1]]' >/home/mame/work/ruby/lib/matrix.rb:1032:in `**': undefined method >`powered_by' for Matrix[[1]]:Matrix (NoMethodError) > from -e:1:in `**' > from -e:1:in `
' > >そもそも 2 ** Matrix[[1]] に意味はないと思うので、Matrix::Scalar#** は >引数が Matrix だったら例外にすべきではないでしょうか。 exp(M) が定義できるので, 2**Mも定義できると思いますが? ただ, 実際に計 算するとなるとかなり面倒で, 今の matrix.rb には荷が重いですが... ということで, 例外を変えるなら NoImplimentError とか? >○ when Numeric の後に when Scalar がある >Scalar は Numeric のサブクラスなので、when Scalar は実行されません。 >もし実行されるようになったとしても、other.value という記述があり、 >Scalar は value というメソッドを提供していないので NoMethodError になる >と思います。 うーん. 確かにそのとおりだと思います. __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---