Bird
Raised Fist0
Rubyprogramming~10 mins

Merge and update methods in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to merge two hashes using the merge method.

Ruby
hash1 = {a: 1, b: 2}
hash2 = {b: 3, c: 4}
result = hash1.[1](hash2)
puts result
Drag options to blanks, or click blank then click option'
Aupdate
Bcombine
Cmerge
Dconcat
Attempts:
3 left
💡 Hint
Common Mistakes
Using update instead of merge changes the original hash.
2fill in blank
medium

Complete the code to update a hash with another hash using the update method.

Ruby
hash1 = {x: 10, y: 20}
hash2 = {y: 30, z: 40}
hash1.[1](hash2)
puts hash1
Drag options to blanks, or click blank then click option'
Aupdate
Bmerge
Creplace
Dconcat
Attempts:
3 left
💡 Hint
Common Mistakes
Using merge instead of update does not change the original hash.
3fill in blank
hard

Fix the error in the code to correctly merge two hashes with a block to handle conflicts.

Ruby
h1 = {a: 100, b: 200}
h2 = {b: 254, c: 300}
result = h1.merge(h2) { |key, old_val, new_val| [1] }
puts result
Drag options to blanks, or click blank then click option'
Aold_val * new_val
Bold_val - new_val
Cnew_val - old_val
Dold_val + new_val
Attempts:
3 left
💡 Hint
Common Mistakes
Using subtraction or multiplication changes the intended result.
4fill in blank
hard

Fill both blanks to create a hash comprehension that merges two hashes and keeps the larger value for duplicate keys.

Ruby
h1 = {a: 5, b: 10}
h2 = {b: 7, c: 12}
result = h1.merge(h2) { |[1], old_val, new_val| old_val [2] new_val ? old_val : new_val }
puts result
Drag options to blanks, or click blank then click option'
Akey
Bk
Cx
D>
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong variable names or comparison operators.
5fill in blank
hard

Fill all three blanks to update a hash with another hash, but keep the original value if the new value is nil.

Ruby
h1 = {a: 1, b: 2}
h2 = {b: nil, c: 3}
h1.update(h2) { |[1], old_val, new_val| new_val [2] nil ? new_val : [3] }
puts h1
Drag options to blanks, or click blank then click option'
Akey
B!=
Cold_val
D==
Attempts:
3 left
💡 Hint
Common Mistakes
Using == instead of != causes wrong logic.
Returning new_val when it is nil replaces original value incorrectly.

Practice

(1/5)
1.

Which Ruby method returns a new hash by combining two hashes without changing the original?

easy
A. merge
B. merge!
C. update
D. replace

Solution

  1. Step 1: Understand merge behavior

    merge returns a new hash combining two hashes without modifying the original.
  2. Step 2: Compare with merge! and update

    Both merge! and update modify the original hash, so they don't return a new one.
  3. Final Answer:

    merge -> Option A
  4. Quick Check:

    merge returns new hash [OK]
Hint: Remember: merge returns new hash, merge! updates original [OK]
Common Mistakes:
  • Confusing merge and merge! methods
  • Thinking update returns a new hash
  • Assuming replace merges hashes
2.

Which of the following is the correct syntax to update hash a with hash b in Ruby?

a = {x: 1}
b = {y: 2}
easy
A. a + b
B. a.merge!b
C. a.merge b
D. a.update(b)

Solution

  1. Step 1: Check syntax for updating hash

    update is a method that modifies the original hash and takes another hash as argument with parentheses.
  2. Step 2: Compare with other options

    merge! also updates but usually called with ! and parentheses are optional but update(b) is the most explicit and correct syntax here.
  3. Final Answer:

    a.update(b) -> Option D
  4. Quick Check:

    Use update() to modify original hash [OK]
Hint: Use update(hash) to change original hash [OK]
Common Mistakes:
  • Using + operator to combine hashes (not valid)
  • Forgetting parentheses in method call
  • Confusing merge and update syntax
3.

What is the output of this Ruby code?

a = {a: 1, b: 2}
b = {b: 3, c: 4}
c = a.merge(b)
puts c
medium
A. {:a=>1, :b=>2, :c=>4}
B. {:a=>1, :b=>3}
C. {:a=>1, :b=>3, :c=>4}
D. {:b=>3, :c=>4}

Solution

  1. Step 1: Understand merge behavior with overlapping keys

    merge returns a new hash combining keys; overlapping keys get values from the second hash.
  2. Step 2: Apply to given hashes

    Key :b is in both hashes; value from b (3) replaces value from a (2). Keys :a and :c are included as is.
  3. Final Answer:

    {:a=>1, :b=>3, :c=>4} -> Option C
  4. Quick Check:

    Overlapping keys replaced by second hash [OK]
Hint: Overlapping keys take second hash's value in merge [OK]
Common Mistakes:
  • Assuming original hash is changed by merge
  • Not replacing overlapping key values
  • Missing keys from either hash
4.

Identify the error in this Ruby code snippet:

a = {x: 10}
b = {y: 20}
a.merge! b
puts a
medium
A. Output will be empty hash
B. No error; code works correctly
C. Runtime error because merge! cannot be used with variables
D. Syntax error due to missing parentheses in merge!

Solution

  1. Step 1: Check syntax of merge! method call

    merge! can be called without parentheses in Ruby, so a.merge! b is valid syntax.
  2. Step 2: Verify runtime behavior

    merge! updates a with keys and values from b, so a becomes {x: 10, y: 20}. No errors occur.
  3. Final Answer:

    No error; code works correctly -> Option B
  4. Quick Check:

    merge! updates original hash without error [OK]
Hint: merge! can be called without parentheses [OK]
Common Mistakes:
  • Thinking parentheses are mandatory
  • Assuming merge! returns a new hash
  • Expecting runtime error with variable argument
5.

You have two hashes:

h1 = {a: 1, b: 2, c: 3}
h2 = {b: 20, d: 4}

You want to update h1 with h2 but only keep keys from h2 that have values greater than 10. Which code correctly does this?

hard
A. h1.update(h2.select { |k, v| v > 10 })
B. h1.update(h2.reject { |k, v| v > 10 })
C. h1.merge(h2.select { |k, v| v > 10 })
D. h1.replace(h2.select { |k, v| v > 10 })

Solution

  1. Step 1: Filter h2 keys with values > 10

    Use select { |k, v| v > 10 } to keep only keys with values greater than 10.
  2. Step 2: Update h1 with filtered h2

    Use update to modify h1 in place with the filtered hash.
  3. Step 3: Check other options

    merge! also updates but update is clearer; merge returns new hash and does not modify h1.
  4. Final Answer:

    h1.update(h2.select { |k, v| v > 10 }) -> Option A
  5. Quick Check:

    Filter then update original hash [OK]
Hint: Filter with select, then update original hash [OK]
Common Mistakes:
  • Using merge instead of update (does not modify original)
  • Not filtering keys before update
  • Using reject incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard