We use each to go through every item in a list one by one. It helps us do something with each item easily.
Each as the primary iterator in Ruby
collection.each do |item| # code to run for each item end
The each method works on collections like arrays and hashes.
The block between do and end runs once for each item.
numbers = [1, 2, 3] numbers.each do |number| puts number end
empty_array = [] empty_array.each do |item| puts item end
single_item = [42] single_item.each do |item| puts item end
hash = {a: 1, b: 2}
hash.each do |key, value|
puts "Key: #{key}, Value: #{value}"
endThis program shows how each goes through the list of fruits and prints a message for each one. The original list stays the same.
fruits = ["apple", "banana", "cherry"] puts "Fruits before iteration:" puts fruits fruits.each do |fruit| puts "I like #{fruit}!" end puts "Fruits after iteration:" puts fruits
Time complexity: each runs once for every item, so it is O(n) where n is the number of items.
Space complexity: each does not create a new list, so it uses little extra space.
A common mistake is trying to change the original list inside each without reassigning it, which does not work.
Use each when you want to do something with each item but do not need to create a new list. Use map if you want a new list with changed items.
each helps you do something with every item in a list.
It works on arrays and hashes by running a block of code for each item.
The original list stays the same after using each.
Practice
each method do in Ruby when used on an array?Solution
Step 1: Understand the purpose of
Theeacheachmethod is used to run a block of code for every item in a collection like an array.Step 2: Check what
It does not change or sort the array; it simply processes each item one by one.eachdoes to the arrayFinal Answer:
It runs a block of code once for every item in the array. -> Option BQuick Check:
eachruns code on each item [OK]
each processes items, does not change array [OK]- Thinking
eachmodifies the array - Confusing
eachwith methods likemap - Assuming
eachreturns a new array
each on an array numbers to print each number?Solution
Step 1: Identify correct block syntax with
The correct syntax useseacheachfollowed by a block with{ |variable| ... }ordo |variable| ... end.Step 2: Check each option
numbers.each { |num| puts num } usesnumbers.each { |num| puts num }which is correct. Others have syntax errors or wrong order.Final Answer:
numbers.each { |num| puts num } -> Option CQuick Check:
Correct block syntax = numbers.each { |num| puts num } [OK]
each { |item| ... } or each do |item| ... end [OK]- Writing
each numbersinstead ofnumbers.each - Missing block delimiters like braces or do-end
- Not using pipes
| |around block variable
fruits = ['apple', 'banana', 'cherry']
fruits.each { |fruit| puts fruit.upcase }Solution
Step 1: Understand what
Theeachdoes withputs fruit.upcaseeachmethod runs the block for each fruit, printing the uppercase version.Step 2: Check output line by line
It prints 'APPLE', then 'BANANA', then 'CHERRY' each on a new line.Final Answer:
APPLE BANANA CHERRY -> Option AQuick Check:
eachprints uppercase fruits [OK]
puts prints each item on a new line [OK]- Thinking
eachreturns a new array - Expecting lowercase output
- Confusing
putswith returning a list
items = [1, 2, 3] items.each do item puts item * 2 end
Solution
Step 1: Check block variable syntax in
When usingeach doblockdowitheach, the block variable must be inside pipes:do |item|.Step 2: Identify the error
The code misses pipes arounditem, causing a syntax error.Final Answer:
Missing pipes around block variable: should be|item|-> Option DQuick Check:
Block variables need pipes| |[OK]
| | with each do [OK]- Omitting pipes around block variables
- Thinking
dois invalid witheach - Assuming multiplication inside
eachis wrong
scores = { alice: 10, bob: 15, carol: 12 }, how can you use each to print each name and score in the format Name: Score?Solution
Step 1: Understand
When usingeachon a hasheachon a hash, the block receives two variables: key and value.Step 2: Match variables and format output
The key is the name (symbol), value is the score. Usename.capitalizeto print the name nicely.Final Answer:
scores.each { |name, score| puts "#{name.capitalize}: #{score}" } -> Option AQuick Check:
Hasheachuses key, value pairs [OK]
each block gets two vars: key and value [OK]- Swapping key and value variables
- Using only one block variable for hash
- Trying to capitalize a number
Ready to prove it?
Pass the test and this pattern moves unknown
