From: "H.Yamamoto" Date: 2005-04-02T11:24:04+09:00 Subject: [ruby-dev:25974] ENV.key 山本です。 1.9 で Hash#index が deprecated になり Hash#key に移行しましたが、 ENV のほうが追随してないようです。 Index: hash.c =================================================================== RCS file: /src/ruby/hash.c,v retrieving revision 1.147 diff -u -w -b -p -r1.147 hash.c --- hash.c 4 Mar 2005 06:47:43 -0000 1.147 +++ hash.c 2 Apr 2005 02:07:05 -0000 @@ -591,8 +591,8 @@ key_i(key, value, args) * Returns the key for a given value. If not found, returns nil. * * h = { "a" => 100, "b" => 200 } - * h.index(200) #=> "b" - * h.index(999) #=> nil + * h.key(200) #=> "b" + * h.key(999) #=> nil * */ @@ -2317,7 +2317,7 @@ env_has_value(dmy, value) } static VALUE -env_index(dmy, value) +env_key(dmy, value) VALUE dmy, value; { char **env; @@ -2343,6 +2343,14 @@ env_index(dmy, value) } static VALUE +env_index(dmy, value) + VALUE dmy, value; +{ + rb_warn("ENV.index is deprecated; use ENV.key"); + return env_key(dmy, value); +} + +static VALUE env_to_hash() { char **env; @@ -2559,6 +2567,7 @@ Init_Hash() rb_define_singleton_method(envtbl,"rehash", env_none, 0); rb_define_singleton_method(envtbl,"to_a", env_to_a, 0); rb_define_singleton_method(envtbl,"to_s", env_to_s, 0); + rb_define_singleton_method(envtbl,"key", env_key, 1); rb_define_singleton_method(envtbl,"index", env_index, 1); rb_define_singleton_method(envtbl,"size", env_size, 0); rb_define_singleton_method(envtbl,"length", env_size, 0); ////////////////////////////////////////// // パッチ後の結果 E:\ruby-cvs\bcc32>irb19 irb(main):001:0> ENV.index("C:\\WINNT") (irb):1: warning: ENV.index is deprecated; use ENV.key => "SystemRoot" irb(main):002:0> ENV.key("C:\\WINNT") => "SystemRoot"