"Hash # has_key?" Ist von Matz
"has_key" has already been deprecated by "key?"
Satz Seitdem sind 8 Jahre vergangen, und verschiedene Styleguides wiesen darauf hin, dass es "veraltet" sei. Es ist gewesen. Zum Beispiel
Aber offiziell ist "Hash # has_key?" Immer noch die einzige Methode, die im Beispielcode verwendet wird und "Hash # include?", "Hash # key?" Und "Hash # member?" Unterdrückt Ja, es ist eine Aktivität, bei der Sie sich überhaupt nicht "veraltet" fühlen.
Japanische Version sieht so aus,
japanische Version
p({1 => "one"}.has_key?(1)) #=> true
p({1 => "one"}.has_key?(2)) #=> false
Englische Version sieht so aus.
Englische Ausgabe
h = { "a" => 100, "b" => 200 }
h.has_key?("a") #=> true
h.has_key?("z") #=> false
Dies liegt jedoch auch an Ruby 2.7, und ab Ruby 2.8 scheint die Aktivität im Beispielcode an andere Methoden übergeben zu werden.
Der auf GitHub veröffentlichte neueste Kommentar sieht folgendermaßen aus.
/*
* 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?
Es fühlt sich an wie ein Push. "Hash # has_key?" Ist jedoch immer noch an zweiter Stelle.
Persönlich bin ich an "Hash # has_key?" Angehängt, und manchmal verwende ich immer noch "Hash # has_key?" In verlassenem Code.
Sie können weiterhin "Hash # has_key?" Verwenden, das noch nicht offiziell als "veraltet" deklariert wurde (nicht wahr?), Oder Sie sollten andere Methoden wie "Hash # key" verwenden Ist es? Mein Herz zittert.
Wenn Sie es wirklich "veraltet" machen wollen, möchte ich, dass Sie mir so schnell wie möglich eine Anleitung geben.
Recommended Posts