【Ruby】Hash#has_key? がまた一歩、公式のdeprecatedに近づいた?
Hash#has_key?
は、Matz さんから、
"has_key" has already been deprecated by "key?"
と宣告されて早8年、いろんな Style guide で、 deprecated
だと指摘されています。例えば、
しかし、公式には、Hash#has_key?
は今なお、Hash#include?
や Hash#key?
、Hash#member?
を抑えて、唯一サンプルコードで用いられているメソッドであり、全く deprecated
さを感じさせない活躍ぶりです。
日本語版はこんな感じで、
p({1 => "one"}.has_key?(1)) #=> true
p({1 => "one"}.has_key?(2)) #=> false
英語版は、こんな感じです。
h = { "a" => 100, "b" => 200 }
h.has_key?("a") #=> true
h.has_key?("z") #=> false
しかし、これも Ruby 2.7 までのことで、Ruby 2.8 からは、サンプルコードでの活躍をほかのメソッドに譲り渡すことになりそうです。
GitHub に上がっている最新のコメントはこうなっています。
/*
* call-seq:
* hash.include?(key) -> true or false
* hash.has_key?(key) -> true or false
* hash.key?(key) -> true or false
* hash.member?(key) -> true or false
* Methods #has_key?, #key?, and #member? are aliases for \#include?.
*
* Returns +true+ if +key+ is a key in +self+, otherwise +false+:
* h = {foo: 0, bar: 1, baz: 2}
* h.include?(:bar) # => true
* h.include?(:nosuch) # => false
*
Hash#include?
一押しって感じですね。とはいえ、Hash#has_key?
はまだ2番手につけています。
個人的には、Hash#has_key?
に愛着を感じており、書き捨てのコードなどでは今でも Hash#has_key?
を使うことがあります。
いまだ公式には deprecated
宣言されていない(ですよね?)Hash#has_key?
を使い続けていいものやら、それとも、心を鬼にして Hash#key?
など他のメソッドを使うべきなのか? 心が揺れ動きます。
本当に deprecated
にする気があるのなら、早々に引導を渡してほしいと思う今日この頃です。
Author And Source
この問題について(【Ruby】Hash#has_key? がまた一歩、公式のdeprecatedに近づいた?), 我々は、より多くの情報をここで見つけました https://qiita.com/kts_h/items/65563ac2d6568ee9f745著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .