📖 Scenario: Imagine you are managing a list of people and their favorite colors. Sometimes, a person might not have a favorite color yet. In Ruby, nil is used to show that something has no value.
🎯 Goal: You will create a Ruby program that uses nil to represent missing favorite colors and then check for those missing values.
📋 What You'll Learn
Create a hash called people_colors with exact keys and values
Use nil to represent no favorite color
Create a variable called missing_color_count to count how many people have no favorite color
Use a for loop with variables person and color to iterate over people_colors
Print the number of people with no favorite color using puts
💡 Why This Matters
🌍 Real World
In real programs, <code>nil</code> helps show when information is missing or unknown, like a missing phone number or address.
💼 Career
Understanding <code>nil</code> is important for Ruby developers to handle data correctly and avoid errors when values are missing.
Progress0 / 4 steps
1
Create the people_colors hash
Create a hash called people_colors with these exact entries: 'Alice' => 'blue', 'Bob' => nil, 'Charlie' => 'green', 'Diana' => nil
Ruby
Hint
Use curly braces {} to create a hash. Use nil for missing favorite colors.
2
Create a counter for missing colors
Create a variable called missing_color_count and set it to 0 to count people with no favorite color
Ruby
Hint
Just set missing_color_count to zero to start counting.
3
Count how many people have no favorite color
Use a for loop with variables person and color to iterate over people_colors. Inside the loop, increase missing_color_count by 1 if color is nil
Ruby
Hint
Use color.nil? to check if the color is missing.
4
Print the count of missing favorite colors
Use puts to print the value of missing_color_count
Ruby
Hint
Use puts missing_color_count to show the number of people without a favorite color.
Practice
(1/5)
1. What does nil represent in Ruby?
easy
A. A boolean false value
B. The number zero
C. The absence of any value
D. An empty string
Solution
Step 1: Understand the meaning of nil
In Ruby, nil is used to represent the absence of a value or nothingness.
Step 2: Differentiate from other values
Zero, empty string, and false are actual values, but nil means no value at all.
Final Answer:
The absence of any value -> Option C
Quick Check:
nil means no value [OK]
Hint: Remember: nil means nothing or no value [OK]
Common Mistakes:
Confusing nil with false
Thinking nil is zero
Assuming nil is an empty string
2. Which of the following is the correct way to check if a variable x is nil in Ruby?
easy
A. if x == null
B. if x.nil?
C. if x === nil
D. if x.isNil()
Solution
Step 1: Recall Ruby's method to check nil
Ruby uses the method .nil? to check if a value is nil.
Step 2: Compare options
if x.nil? uses x.nil? which is the correct Ruby syntax. Other options use incorrect syntax or methods not in Ruby.
Final Answer:
if x.nil? -> Option B
Quick Check:
Use .nil? to check nil [OK]
Hint: Use .nil? method to check nil in Ruby [OK]
Common Mistakes:
Using 'null' instead of 'nil'
Using triple equals (===) incorrectly
Using JavaScript style isNil() method
3. What will be the output of this Ruby code?
value = nil
if value.nil?
puts "No value"
else
puts "Has value"
end
medium
A. Error
B. Has value
C. nil
D. No value
Solution
Step 1: Check the variable value
The variable value is assigned nil, meaning no value.
Step 2: Evaluate the if condition
The condition value.nil? returns true because value is nil, so it prints "No value".
Final Answer:
No value -> Option D
Quick Check:
value.nil? true prints "No value" [OK]
Hint: If variable.nil? is true, it means no value [OK]
Common Mistakes:
Assuming nil prints as 'nil'
Confusing nil with false
Expecting an error from nil check
4. Find the error in this Ruby code snippet:
def check_value(val)
if val == nil?
"Value is nil"
else
"Value exists"
end
end
puts check_value(nil)
medium
A. Should use 'val.nil?' without '=='
B. Missing 'end' for the method
C. Using '==' with nil? method is incorrect
D. Cannot compare with nil in Ruby
Solution
Step 1: Identify the incorrect comparison
The code uses val == nil?, which is invalid because nil? is a method and cannot be used like this.
Step 2: Correct the nil check syntax
The proper way is to call val.nil? without using == to check if val is nil.
Final Answer:
Should use 'val.nil?' without '==' -> Option A
Quick Check:
Use val.nil? method directly, no '==' [OK]
Hint: Call .nil? directly, don't compare with == [OK]
Common Mistakes:
Using '==' with .nil? method
Confusing method call syntax
Thinking nil is a keyword to compare with
5. Given a list of values [1, nil, 3, nil, 5], which Ruby code correctly counts how many elements are nil?
hard
A. All of the above
B. [1, nil, 3, nil, 5].select(&:nil?).length
C. [1, nil, 3, nil, 5].count(nil)
D. [1, nil, 3, nil, 5].filter { |v| v.nil? }.size
Solution
Step 1: Understand ways to count nil elements
Ruby arrays have multiple ways to count elements matching a condition: .count(nil), .select(&:nil?).length, and .filter { |v| v.nil? }.size all work.
Step 2: Verify each option
[1, nil, 3, nil, 5].count(nil) counts elements equal to nil directly. Options B and D select elements where v.nil? is true and count them. All produce the same result.
Final Answer:
All of the above -> Option A
Quick Check:
Multiple Ruby methods count nil elements correctly [OK]
Hint: Use count(nil) or select/filter with .nil? to count nils [OK]
Common Mistakes:
Using count without argument
Confusing length and size methods
Forgetting & before :nil? in select
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.