デフォルト値とマージ
fetch、merge、dig です。
「デフォルト値とマージ」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
nilの問題
存在しないキーを読み取るとnilが返るため、計算や論理処理で予期しない結果になることがあります。Rubyには、値がない場合を安全に扱う方法が用意されています。
h = { a: 1 }
puts h[:b].inspectfetchで安全にアクセスする
fetchは値を返し、キーがない場合は明確なエラーを発生させます。キーが必須の場合に使います。
h = { name: "Ada" }
puts h.fetch(:name)デフォルト値付きのfetch
fetchの2番目の引数に、キーがない場合だけ使う代替値を指定できます。
h = { name: "Ada" }
puts h.fetch(:age, 0)
puts h.fetch(:name, "Unknown")ブロック付きのfetch
ブロックを渡すと、代替値を遅延評価で計算できます。ブロックが実行されるのはキーが見つからない場合だけです。
h = {}
puts h.fetch(:x) { "computed default" }デフォルト値付きのハッシュ
Hash.new(default)は、存在しないキーに対してnilではなくデフォルト値を返します。デフォルト値は共有されるため、単純な不変値に使うのが適しています。
counts = Hash.new(0)
counts[:a] += 1
counts[:a] += 1
puts counts[:a]
puts counts[:b]ブロックによるデフォルト値
Hash.new { |hash, key| ... }はキーごとに新しいデフォルト値を計算するため、配列へのグループ化に適しています。
groups = Hash.new { |h, k| h[k] = [] }
groups[:fruit] << "apple"
groups[:fruit] << "pear"
puts groups[:fruit].inspectデフォルト値でカウントする
デフォルト値を0にすると、単語のカウントを簡単かつすっきり書けます。
words = ["a", "b", "a", "a"]
count = Hash.new(0)
words.each { |w| count[w] += 1 }
puts countハッシュをマージする
mergeは2つのハッシュを結合して、新しいハッシュを作ります。キーが重複する場合は、2つ目のハッシュの値が優先されます。
defaults = { color: "red", size: "M" }
user = { color: "blue" }
puts defaults.merge(user)ブロック付きでマージする
mergeにブロックを渡すと、値を加算するなどして重複するキーを処理できます。
a = { x: 1, y: 2 }
b = { y: 3, z: 4 }
puts a.merge(b) { |key, old, new| old + new }digで安全にネストへアクセスする
digはネストしたハッシュを安全にたどります。途中の階層が存在しない場合もエラーにせず、nilを返します。
data = { user: { address: { city: "London" } } }
puts data.dig(:user, :address, :city)
puts data.dig(:user, :phone, :home).inspectツールを組み合わせる
デフォルト値とmergeを組み合わせると、基本設定に上書き設定を加えて設定値を構築できます。
base = { retries: 3, timeout: 30 }
options = base.merge(timeout: 60)
puts options.fetch(:timeout)理解度チェック
デフォルト値とマージについて確認します。
まとめ
これで、存在しないデータを適切に扱えるようになりました。
- デフォルト値、ブロック、厳格なエラー処理に対応した
fetch - カウントやグループ化に使う
Hash.new(0)とブロックによるデフォルト値 - 競合処理用のブロックを指定した
merge - 安全なネストアクセスのための
dig
次のコースでは、範囲とEnumerableを扱います。
c = Hash.new(0)
c[:hits] += 1
puts c[:hits]よくある質問
「デフォルト値とマージ」レッスンは無料ですか?
はい。「デフォルト値とマージ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「デフォルト値とマージ」で何を学びますか?
fetch、merge、dig です。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「デフォルト値とマージ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- シンボルと文字列
- ハッシュの作成と読み取り
- ハッシュの反復処理
- デフォルト値とマージ