なかだです。

At Mon, 25 Feb 2002 11:47:27 +0900,
Yukihiro Matsumoto wrote:
> |[ruby-dev:15245]のようなことがあるので、autoloadを設定された
> |constantはdefined?のときにrequireを実行してしまうか、falseなどの
> |"constant"以外の値を返すようにしてほしいです。
> 
> あれはcomplex.rbがautoload的にお行儀が悪い(Rationalが定義さ
> れているかどうかで、Fixnumが拡張されているかどうかを判定して
> いる)のが原因なので、本当に対応する必要があるかどうかは疑問
> です。

重複してaliasするのを避けるためのように見えるので、これでどうで
しょうか。


Index: complex.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/complex.rb,v retrieving revision 1.7 diff -u -2 -p -r1.7 complex.rb --- complex.rb 2001/10/22 06:48:16 1.7 +++ complex.rb 2002/03/09 11:26:45 @@ -324,7 +324,5 @@ end class Fixnum - if not defined? Rational - alias power! ** - end + alias power! ** unless method_defined? :power! def ** (other) @@ -346,22 +344,20 @@ end class Bignum - if not defined? Rational - alias power! ** - end + alias power! ** unless method_defined? :power! end class Float - alias power! ** + alias power! ** unless method_defined? :power! end module Math - alias sqrt! sqrt - alias exp! exp - alias cos! cos - alias sin! sin - alias tan! tan - alias log! log - alias log10! log10 - alias atan2! atan2 + alias sqrt! sqrt unless method_defined? :sqrt! + alias exp! exp unless method_defined? :exp! + alias cos! cos unless method_defined? :cos! + alias sin! sin unless method_defined? :sin! + alias tan! tan unless method_defined? :tan! + alias log! log unless method_defined? :log! + alias log10! log10 unless method_defined? :log10! + alias atan2! atan2 unless method_defined? :atan2! def sqrt(z) Index: rational.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/rational.rb,v retrieving revision 1.3 diff -u -2 -p -r1.3 rational.rb --- rational.rb 1999/09/01 09:48:03 1.3 +++ rational.rb 2002/03/09 04:04:25 @@ -313,5 +313,5 @@ end class Fixnum - alias div! /; + alias div! / unless method_defined? :div! def div(other) if other.kind_of?(Fixnum) @@ -328,6 +328,7 @@ class Fixnum # alias divmod! divmod - if not defined? Complex - alias power! **; + unless method_defined? :power! + power_aliased = true + alias power! ** end @@ -357,15 +358,14 @@ class Fixnum end - if not defined? Complex - alias ** rpower - end + alias ** rpower if power_aliased end class Bignum - alias div! /; - alias div /; - alias divmod! divmod + alias div! / unless method_defined? :div! + alias div / unless method_defined? :div + alias divmod! divmod unless method_defined? :divmod! - if not defined? power! + unless method_defined? :power! + power_aliased = true alias power! ** end @@ -383,7 +383,5 @@ class Bignum end - if not defined? Complex - alias ** rpower - end + alias ** rpower if power_aliased end
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦