以下に挙げる変数名、メソッド名、オブジェクト名は古い名前です。 使用すると、警告が出たり、ある日突然なくなったりするかもしれません。
1.7 では、警告が出ます。代わりに Object#class を使用してください。
p Object.new.type => -:1: warning: Object#type is deprecated; use Object#class ruby 1.7.3 (2002-10-08) [i586-linux] Object
self を要素とする配列を返していましたが、この挙動はなくなるようです。 1.7 では、警告がでます。
p Object.new.to_a -:1: warning: default `to_a' will be obsolete ruby 1.7.3 (2002-09-05) [i586-linux] [#<Object:0x401a88ac>]
FileTest.exist? の別名ですが、使用は推奨されないよう です。おそらく Ruby におけるメソッド名の命名規則からだと思います。 rubyist:1194[外部]
version 1.7 では、使用すると
warning: Array#indexes is deprecated; use Array#select
と警告が出ます。
ということからだそうですruby-dev:16084[外部]。
ruby-talk:10830[外部], ruby-talk:11066[外部], ruby-dev:16082[外部] などで議論が起こっていました。
警告メッセージにあるように select がその候補になっています。
version 1.7では、旧称は削除されました。
MatchDataの旧称
Array#collect! に置き換えられました。
このメソッドを使用すると警告メッセージが出ます。 (1.7 ではこのメソッドはなくなりました。)
version 1.7 から Process.times に移動しました。version
1.7 で Time.times
を使用すると警告メッセージが出ます。
メソッドに付いたブロックが必ずしも繰り返さないことからイテレータはブ ロック付きメソッドの総称ではなくなりました。そのためブロック付きで呼 ばれたかどうかの判断は関数 block_given? に名称が変更されました。
が、イテレータという用語自体は依然使われ続けています。(このマニュア ルでも使っています)そのためこの関数が消えることもないかもしれません。
p オプションはなくなりました(1.6 では使用すると警告が出ます。1.7から は完全になくなりました)。入れ代わりに m オプションが導入されましたが これは p オプションとは意味がまったく違います。
//p はメタ文字 ".", "^", "$" の意味を変えるオプションでしたが、 //m は "." の意味だけを変えます("." が改行にマッチするようになる)。 //p は、定義が複雑であること、//m と 正規表現 \A \Z を使って表現可能 であることから廃止されました。詳細はruby-list:22483[外部]を参照のこと。
$~
, $!
等なくなることはないと思いますが、基本的に使わないのが最近のスタイルです。 (少なくとも増えることはないそうです) これら特殊変数を使わないようにするために追加されたメソッドや文 法が存在します。(Regexp.last_match, Process.waitpid2, rescue => var など)
だからといって、無理に特殊変数を使わないようにする必要はありません。 各人の好みに応じて使い分けてください。
なお、$=
(文字列の比較における大文字小文字の無視)は、使いにくい
という理由から obsolete であることが明言されました
(ruby-dev:12978[外部])。version 1.7 では警告が出ます。
$= = 1 => ruby 1.7.1 (2001-06-12) [i586-linux] => -:1: warning: modifying $= is deperecated ruby 1.7.1 (2001-07-31) [i586-linux]
version 1.7 では、文字列のハッシュ値は、$= の値に依存しなくなっています。 ruby-bugs-ja:PR#61[外部]
str = "foobar" $= = false a = str.hash $= = true b = str.hash p a,b => ruby 1.6.4 (2001-07-31) [i586-linux] 594908901 -24977883 => -:3: warning: modifying $= is deperecated -:5: warning: modifying $= is deperecated ruby 1.7.1 (2001-08-06) [i586-linux] 594908901 594908901
(一部憶測を含む解説)
昔も今もこれらは定数であり値(オブジェクト)ではありませんが、(はるか)
昔は、true, false, nil を参照するにはこれらの定数を通してしか行えま
せんでした。現在、疑似変数 true
, false
, nil
によっ
て直接これらの特殊なオブジェクトを参照することが出来るためわざわざ定
数を使う必要はなくなりました。(疑似変数はパーサが解釈するのでほんの
わずか速いかもしれません:-)
大文字をこよなく愛する汎用機系の人(偏見)は使い続けても問題ないでしょ う:-)
RUBY_VERSION,RUBY_RELEASE_DATE,RUBY_PLATFORMの旧称。
使用すると warning が出ます。これらのメソッドは以前 final.rb で提供 されていた
ObjectSpace.define_finalizer ObjectSpace.undefine_finalizer
が組み込まれたことによって obsolete になりました(従って、final.rb も obsolete になりました)。