日本語版
最新ニュース
科学&テクノロジー

Rubyでハッシュにキーがあるかどうかを確認する方法

Ruby では、特定のキーがすでにハッシュに含まれているかどうかを確認したい場合があります。ハッシュを初めて使用する場合は、次のように書きました。 Ruby ハッシュに関する基本的なブログ記事。ハッシュのキーのチェックは Ruby API にすでに存在しますか?指定されたハッシュに指定されたキーがあることを確認したい場合はどうすればよいでしょうか? コードを記述する前に、最初に考えるべきことは、「これは API のどこかに既に存在するかどうか」ということです。ユーティリティ関数が欠落していることは非常にまれです。歴史的な理由から、抜粋は JavaScript のものである可能性があります。しかし、Ruby の場合はそうではなく、Ruby-on-Rails 環境ではなおさらです。Rubyコア: キーが存在するかどうかを確認するワンライナーの方法Ruby をすでに知っている人のために、簡単な答えをここに示します1 $> my_hash.key?("my_key") Ruby : ブール値にキャストしてキーの存在を確認しますRuby コンソールを起動します (Rails プロジェクトでは、「bin/rails console」と入力します)。1 $> my_hash = {'a' => 40, a: 41, b: 'some_value'} ちなみに、文字列は 'a' シンボルとは異なるキーとみなされます…

Rubyでハッシュにキーがあるかどうかを確認する方法

1707026604
2024-02-01 12:56:56

Ruby では、特定のキーがすでにハッシュに含まれているかどうかを確認したい場合があります。

ハッシュを初めて使用する場合は、次のように書きました。 Ruby ハッシュに関する基本的なブログ記事

ハッシュのキーのチェックは Ruby API にすでに存在しますか?

指定されたハッシュに指定されたキーがあることを確認したい場合はどうすればよいでしょうか? コードを記述する前に、最初に考えるべきことは、「これは API のどこかに既に存在するかどうか」ということです。

ユーティリティ関数が欠落していることは非常にまれです。歴史的な理由から、抜粋は JavaScript のものである可能性があります。

しかし、Ruby の場合はそうではなく、Ruby-on-Rails 環境ではなおさらです。

Rubyコア: キーが存在するかどうかを確認するワンライナーの方法

Ruby をすでに知っている人のために、簡単な答えをここに示します

1
$> my_hash.key?("my_key")

Ruby : ブール値にキャストしてキーの存在を確認します

Ruby コンソールを起動します (Rails プロジェクトでは、「bin/rails console」と入力します)。

1
$> my_hash = {'a' => 40, a: 41, b: 'some_value'}

ちなみに、文字列は 'a' シンボルとは異なるキーとみなされます a:

キーが my_hash に属していることを確認したいので、素朴なアプローチは double を使用することです !! 任意の値をブール値に変換します。 これは、JavaScript などの他の言語で使用されるトリックです。

1
2
3
4
5
6
7
8
$> my_hash[:b]
'some_value'
$> my_hash[:c]
nil
$> !!my_hash[:b]
false
$> !!my_hash[:c]
true

Ruby ハッシュの特定のキーの存在を確認するためのより表現力豊かな方法

Ruby ハッシュには、最も一般的なユースケース向けの表現力豊かな API が備わっています。 .keyを使用できますか? !! の代わりにメソッドを使用します。 上に見られます。

他の開発者にとってもはるかに読みやすいものになっています。

例:

1
2
3
4
5
6
7
8
$> my_hash[:b]
'some_value'
$> my_hash[:c]
nil
$> my_hash.key?[:b]
false
$> my_hash.key?[:c]
true

Ruby-on-Rails : ハッシュにキーがあるかどうかを確認する

使用できます .has_key? 同じように。 意図がより明確になるため、私はこのソリューションを好みます。 ブール値を期待しているため、is_ または has_/have_ によってメソッドを開始する方が適切です。

1
2
3
4
5
6
7
8
$> my_hash[:b]
'some_value'
$> my_hash[:c]
nil
$> my_hash.has_key?[:b]
false
$> my_hash.has_key?[:c]
true

考えられる最も堅牢な答え

では、チェックしているハッシュがよくわからない場合はどうすればよいでしょうか。

ケース 1: キーがシンボルであるかどうかがわかりません。リモート API から抽出されたハッシュを考えてください。

1
2
$> my_hash.deep_symbolize_keys.try(:key?, :a)
true

ケース 2: それが実際にハッシュであるかどうかわかりません (nil または間違った型である可能性があります)

1
2
$> my_hash.try(:key?, :a)
true

状況によっては、これはオーバーエンジニアリングとみなされる可能性があることに注意してください。

結論

Ruby でハッシュにキーがあるかどうかを確認するのは非常に簡単です。必要なのは、この検証をどのようなコンテキストで記述しているかに少し注意を払うことだけです。

こちらもご覧ください それで質問

#Rubyでハッシュにキーがあるかどうかを確認する方法

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。