📖 Scenario: Imagine you are working on a program that uses fixed messages that should never change during the program's run. To protect these messages from accidental changes, you will learn how to make strings immutable by freezing them.
🎯 Goal: You will create a string, freeze it to make it immutable, and then try to modify it to see what happens.
📋 What You'll Learn
Create a string variable with a specific message
Freeze the string to make it immutable
Attempt to modify the frozen string
Observe the error raised when modifying a frozen string
💡 Why This Matters
🌍 Real World
Freezing strings helps protect important fixed messages or configuration values in programs so they cannot be changed by mistake.
💼 Career
Understanding immutability and error handling is important for writing safe and reliable Ruby code in professional software development.
Progress0 / 4 steps
1
Create a string variable
Create a string variable called message and set it to the exact text "Welcome to Ruby!".
Ruby
Hint
Use = to assign the string to the variable message.
2
Freeze the string
Freeze the string message by calling the freeze method on it and reassign the result back to message.
Ruby
Hint
Use message.freeze and assign it back to message.
3
Attempt to modify the frozen string
Try to change the first character of message to 'H' by assigning message[0] = 'H'.
Ruby
Hint
Use the syntax message[0] = 'H' to try to change the first character.
4
Observe the error when modifying a frozen string
Run the program and observe the error message printed when trying to modify the frozen string message. Use begin and rescue to catch the error and print "Cannot modify frozen string".
Ruby
Hint
Use begin and rescue to catch the error and puts to print the message.
Practice
(1/5)
1. What does freezing a string in Ruby do? str = "hello".freeze
easy
A. Converts the string to uppercase.
B. Deletes the string from memory.
C. Makes the string unchangeable (immutable).
D. Allows the string to be modified faster.
Solution
Step 1: Understand the freeze method
The freeze method in Ruby makes an object immutable, meaning it cannot be changed after freezing.
Step 2: Apply to strings
When applied to a string, it prevents any further modifications to that string's content.
Final Answer:
Makes the string unchangeable (immutable). -> Option C
Quick Check:
freeze means immutable = A [OK]
Hint: Freeze means no changes allowed to the string [OK]
Common Mistakes:
Thinking freeze deletes the string
Assuming freeze changes string content
Believing freeze speeds up modification
2. Which of the following is the correct way to freeze a string in Ruby?
easy
A. str.freeze = "hello"
B. str = "hello".freeze
C. freeze str = "hello"
D. str = freeze("hello")
Solution
Step 1: Review Ruby freeze syntax
The correct syntax to freeze a string is to call .freeze on the string object, like "hello".freeze.
Step 2: Check each option
str = "hello".freeze correctly calls .freeze on the string literal. Options B, C, and D use invalid syntax or incorrect method calls.
Final Answer:
str = "hello".freeze -> Option B
Quick Check:
Call .freeze on string = A [OK]
Hint: Use .freeze after the string literal [OK]
Common Mistakes:
Trying to assign freeze as a variable
Using freeze as a standalone keyword
Calling freeze as a function with parentheses
3. What will happen when the following Ruby code runs?
str = "hello".freeze
str << " world"
medium
A. The string becomes "hello world".
B. The string remains "hello" silently.
C. The string changes to " world".
D. A runtime error occurs: can't modify frozen String.
Solution
Step 1: Understand string freezing effect
Freezing the string "hello" makes it immutable, so any modification attempt will raise an error.
Step 2: Analyze the << operation
The << operator tries to append " world" to the frozen string, which is not allowed and causes a runtime error.
Final Answer:
A runtime error occurs: can't modify frozen String. -> Option D
Quick Check:
Modifying frozen string = error C [OK]
Hint: Appending to frozen string causes error [OK]
Common Mistakes:
Assuming string changes silently
Thinking string resets to new value
Believing no error occurs
4. Identify the error in this Ruby code:
name = "Alice"
name.freeze
name.upcase!
medium
A. Error because upcase! tries to modify a frozen string.
B. No error; the code runs fine.
C. Error because freeze is called incorrectly.
D. Error because name is not a string.
Solution
Step 1: Check freeze usage
The freeze method is correctly called on the string name, making it immutable.
Step 2: Understand upcase! effect
The upcase! method tries to change the string in place, which is not allowed on a frozen string, causing a runtime error.
Final Answer:
Error because upcase! tries to modify a frozen string. -> Option A
Quick Check:
Modifying frozen string with upcase! = error B [OK]
Hint: In-place methods fail on frozen strings [OK]
Common Mistakes:
Thinking freeze is called incorrectly
Assuming no error on upcase!
Confusing variable type
5. You want to store a constant greeting message that should never change in your Ruby program. Which approach is best?
GREETING = "Welcome!".freeze
Why is freezing important here?
hard
A. It prevents accidental changes to the greeting, ensuring data integrity.
B. It makes the greeting print faster.
C. It allows the greeting to be changed later if needed.
D. It compresses the string to save memory.
Solution
Step 1: Understand constant usage
Constants like GREETING should not change during program execution to avoid bugs.
Step 2: Role of freeze on constants
Freezing the string ensures it cannot be modified accidentally, protecting the constant's value.
Final Answer:
It prevents accidental changes to the greeting, ensuring data integrity. -> Option A
Quick Check:
Freeze constant for safety = D [OK]
Hint: Freeze constants to keep them safe from changes [OK]
Common Mistakes:
Thinking freeze speeds up printing
Believing freeze allows changes later
Assuming freeze compresses data
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.