From: Wakou Aoyama Date: 2002-03-22T08:11:14+09:00 Subject: [ruby-dev:16532] 定数の再定義 青山です。 dev に移動します。 On Wed, Mar 20, 2002 at 04:44:29PM +0900, Wakou Aoyama wrote: > ところで、定数の再定義のワーニングは、以前(1.2以前?)は起動オプション > -w を指定した場合だけに出ていたはずですが、無条件にワーニングを出すほ > どに危険な行為、と扱いが変わったのでしょうか? class TEST CONST = 1 end class TEST CONST = 2 end 1.2 NameError 1.4 無条件に warning (-w 指定で二重の warning) 1.6 無条件に warning (1.7 無条件に warning) CONST = 1 class TEST CONST = 2 end 1.2 -w 指定で warning 1.4 -w 指定で warning 1.6 -w 指定でも warning 無し (1.7 -w 指定でも warning 無し) このように変化していたんですね。1.6 からは、下位クラスでの再定義には -w でも warning が出なくなったようですし、思い切って、さらにゆるめて、 同クラスでの再定義を、無条件に warning から -w で warning にするとい うのはどうでしょうか? warning などに気を使っている人ならば、-w を使っている可能性が高いよう に思われますし、一方、出来上がったものを使うだけ、という人には warning を出しても不安がられるだけだったりしますし。 また、String, Array, Hash ならば、#replace で warning を逃れられる場合 もありますが、上の例のように Numeric などの場合には、warning を逃れる 手段が無いという面もありますので。 CONST = 1 class TEST CONST = 2 # warning 無し (現状まま) end class TEST CONST = 3 # -w で warning (現状は無条件に warning) end -- 青山 和光 Wakou Aoyama