[解決済み] ハッシュを扱うときのfetchと[]の違い?重複
2023-06-09 08:33:32
質問
Ruby公案より
about_hashes.rb
:
なぜ
#fetch
の代わりに
#[]
に変更することはできますか?
どのように解決するのですか?
デフォルトでは
#[]
を使うと、ハッシュ値が存在する場合はそれを取得し、存在しない場合はnilを返します *。
使用方法
#fetch
を使うと、いくつかのオプションがあります (詳しくは
#fetch
):
-
fetch(key_name)
: キーが存在する場合は値を取得し、キーが存在しない場合はKeyError
を送出します。 -
fetch(key_name, default_value)
: キーが存在する場合に値を取得し、その値を元にdefault_value
それ以外の場合は -
fetch(key_name) { |key| "default" }
: キーが存在すれば値を取得し、そうでなければ与えられたブロックを実行し、値を返します。
それぞれは状況に応じて使い分ける必要がありますが
#fetch
は非常に機能が豊富で、使い方次第で様々なケースに対応できます。そのため、私は、キーにアクセスする際に
#[]
.
* Marc-André Lafortune が言ったように、キーにアクセスする際に
#[]
でキーにアクセスすると
#default_proc
を呼び出すか、さもなければ
#default
を返しますが、デフォルトは
nil
. 参照
のドキュメントエントリを参照してください。
::new
をご覧ください。
関連
-
[解決済み] イコール、エクル、==、==の違いは何ですか?
-
[解決済み] Rubyのattr_accessor, attr_reader, attr_writerを使う理由は?
-
[解決済み] Rubyのincludeとrequireの違いは何ですか?
-
[解決済み] RSpecのlet()はいつ使うのか?
-
[解決済み] クラスとモジュールの違い
-
[解決済み】Rubyで配列を反復処理するための「正しい」方法は何ですか?
-
[解決済み】ハッシュで文字列を記号に変換する最適な方法
-
[解決済み] Ruby send と __send__ の比較
-
[解決済み] Rubyで文字列を構築するとき、なぜシャベル演算子(<<)がプラスイコール(+=)よりも好ましいのですか?
-
[解決済み] Rubyでコンソールから入力を読み込む?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] rvm use 2.0.0 --default を実行すると、"Warning! PATH is not properly set up" と表示される。
-
[解決済み] ファイルのテキストをパターン検索し、指定された値で置き換える方法
-
[解決済み] Rubyでモジュール変数を作成する
-
[解決済み] 今月の名前(Date.today.monthをnameに変換)。
-
[解決済み] Ruby文字列のgsubメソッドとsubメソッドの違いについて
-
[解決済み] Rubyで文字列が正規表現にマッチするかどうかをチェックする最も速い方法?
-
[解決済み] 既存の文字列に追加する
-
[解決済み] Rubyです。変数を文字列にマージする
-
[解決済み] Rubyで親のクラス名を取得するには?
-
[解決済み] raise "foo"`と`raise Exception.new("foo")` の違いは何ですか?