📖 Scenario: Imagine you have a simple app that works with numbers. You want to add new features to numbers without changing the original number code. This is like adding new tools to your toolbox without breaking the old ones.
🎯 Goal: You will learn how to use extension in Swift to add new functions to existing types without changing their original code.
📋 What You'll Learn
Create a variable with a number
Create an extension for the Int type
Add a new function inside the extension
Call the new function and print the result
💡 Why This Matters
🌍 Real World
Extensions let developers add new features to existing code safely, like adding new tools to a toolbox without breaking old tools.
💼 Career
Understanding extensions is important for Swift developers to write clean, maintainable, and flexible code in apps.
Progress0 / 4 steps
1
Create a variable with a number
Create a variable called myNumber and set it to 10.
Swift
Hint
Use var myNumber = 10 to create the variable.
2
Create an extension for the Int type
Create an extension for the Int type. Inside it, define a function called squared() that returns the number multiplied by itself.
Swift
Hint
Use extension Int { func squared() -> Int { return self * self } }.
3
Call the new function on the variable
Call the squared() function on myNumber and store the result in a variable called result.
Swift
Hint
Use let result = myNumber.squared() to call the function.
4
Print the result
Print the value of result using print().
Swift
Hint
Use print(result) to show the output.
Practice
(1/5)
1. Why do Swift extensions add capability without modifying the original type?
easy
A. Because they require subclassing the original type
B. Because they add new features without changing existing code
C. Because they delete old methods before adding new ones
D. Because they replace the original type completely
Solution
Step 1: Understand what extensions do
Extensions add new methods or properties to existing types without altering the original source code.
Step 2: Recognize the benefit
This allows adding features safely without changing or breaking existing code.
Final Answer:
Because they add new features without changing existing code -> Option B
Quick Check:
Extensions add features without modification = D [OK]
Hint: Extensions add, not change, original code [OK]
Common Mistakes:
Thinking extensions replace original types
Believing extensions delete old methods
Confusing extensions with subclassing
2. Which of the following is the correct syntax to add a method using an extension in Swift?
easy
A. extension MyType { func newMethod() { } }
B. extend MyType { func newMethod() { } }
C. extension MyType: { func newMethod() { } }
D. extension MyType func newMethod() { }
Solution
Step 1: Recall Swift extension syntax
Extensions start with the keyword 'extension' followed by the type name and braces enclosing new members.
4. Identify the error in this Swift extension code:
extension Int {
func squared() -> Int {
return self * self
}
}
let result = 5.squared
print(result)
medium
A. Cannot extend Int type
B. squared() must be static method
C. self keyword not allowed in extensions
D. Missing parentheses when calling squared()
Solution
Step 1: Check method call syntax
The method squared() is defined correctly, but calling 5.squared misses parentheses.
Step 2: Understand method call requirements
In Swift, methods must be called with parentheses even if no parameters, so 5.squared() is correct.
Final Answer:
Missing parentheses when calling squared() -> Option D
Quick Check:
Method call needs () = B [OK]
Hint: Call methods with () even if no parameters [OK]
Common Mistakes:
Calling methods without parentheses
Thinking Int cannot be extended
Believing self is disallowed in extensions
5. You want to add a computed property isEven to Int using an extension that returns true if the number is even. Which code correctly achieves this without modifying the original Int type?
hard
A. extension Int { static var isEven: Bool { self % 2 == 0 } }
B. extension Int { func isEven() -> Bool { self % 2 == 0 } }
C. extension Int { var isEven: Bool { self % 2 == 0 } }
D. extension Int { var isEven: Bool { return self / 2 == 0 } }
Solution
Step 1: Understand computed property syntax
Computed properties use 'var name: Type { expression }' without parentheses.
Step 2: Check each option
extension Int { var isEven: Bool { self % 2 == 0 } } correctly defines a computed property isEven returning true if self % 2 == 0. extension Int { func isEven() -> Bool { self % 2 == 0 } } uses a method, not a property. extension Int { static var isEven: Bool { self % 2 == 0 } } incorrectly uses static. extension Int { var isEven: Bool { return self / 2 == 0 } } uses wrong logic (division instead of modulo).
Final Answer:
extension Int { var isEven: Bool { self % 2 == 0 } } -> Option C
Quick Check:
Computed property with modulo check = A [OK]
Hint: Computed properties use var without parentheses [OK]
Common Mistakes:
Using func instead of var for computed property
Making property static when it should be instance
Using division instead of modulo for even check
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.