📖 Scenario: You are creating a simple app to manage rectangles. You want to store the width and height, and also calculate the area automatically whenever needed.
🎯 Goal: Build a Swift struct called Rectangle with stored properties for width and height, and a computed property for area.
📋 What You'll Learn
Create a struct named Rectangle
Add stored properties width and height of type Double
Add a computed property area that returns the product of width and height
Create an instance of Rectangle with width 5.0 and height 3.0
Print the area of the rectangle
💡 Why This Matters
🌍 Real World
Computed properties help keep data consistent and up-to-date without storing extra values. For example, calculating area or volume on demand.
💼 Career
Understanding computed properties is essential for Swift developers building apps that manage dynamic data efficiently.
Progress0 / 4 steps
1
Create the Rectangle struct with width and height
Create a struct called Rectangle with two stored properties: width and height, both of type Double. Set no initial values.
Swift
Hint
Use struct Rectangle { var width: Double; var height: Double } to define the shape.
2
Add a computed property for area
Inside the Rectangle struct, add a computed property called area of type Double that returns the product of width and height.
Swift
Hint
Computed properties use { return ... } to calculate values on the fly.
3
Create an instance of Rectangle
Create a constant called myRect and assign it a Rectangle instance with width 5.0 and height 3.0.
Swift
Hint
Use let myRect = Rectangle(width: 5.0, height: 3.0) to create the rectangle.
4
Print the area of the rectangle
Write a print statement to display the area of myRect.
Swift
Hint
Use print(myRect.area) to show the area.
Practice
(1/5)
1. What is a computed property in Swift?
easy
A. A property that can only be set but not read
B. A property that stores a fixed value permanently
C. A property that calculates its value dynamically when accessed
D. A property that is declared outside a class or struct
Solution
Step 1: Understand property types in Swift
Stored properties hold fixed values, while computed properties calculate values dynamically.
Step 2: Identify computed property behavior
Computed properties use code to return a value each time they are accessed instead of storing it.
Final Answer:
A property that calculates its value dynamically when accessed -> Option C
Quick Check:
Computed property = dynamic value calculation [OK]
Hint: Computed properties calculate values on demand, not stored [OK]
Common Mistakes:
Confusing computed properties with stored properties
Thinking computed properties store values permanently
Assuming computed properties cannot have setters
2. Which of the following is the correct syntax for a computed property with a getter in Swift?
easy
A. var area: Double get { width * height }
B. var area: Double = width * height
C. var area: Double { get { width * height } }
D. var area: Double { return width * height }
Solution
Step 1: Recall computed property syntax
Computed properties use curly braces with a getter that returns a value.
Step 2: Check each option
var area: Double { return width * height } correctly uses braces and return keyword. var area: Double = width * height is stored property syntax. var area: Double { width * height } misses return keyword. var area: Double get { width * height } has incorrect getter syntax.
Final Answer:
var area: Double { return width * height } -> Option D
Quick Check:
Computed property getter uses braces and return [OK]
Hint: Use braces and return keyword for computed property getter [OK]
Common Mistakes:
Omitting the return keyword inside getter
Using equals sign instead of braces
Incorrect getter syntax without braces
3. Consider this Swift struct:
struct Rectangle {
var width: Double
var height: Double
var area: Double {
return width * height
}
}
let rect = Rectangle(width: 3, height: 4)
print(rect.area)
What is the output?
medium
A. Compilation error
B. 12.0
C. 0.0
D. 7.0
Solution
Step 1: Understand the struct and computed property
Rectangle has width=3 and height=4. The computed property area returns width * height.
Step 2: Calculate the area value
3 * 4 = 12.0, so rect.area returns 12.0.
Final Answer:
12.0 -> Option B
Quick Check:
3 * 4 = 12.0 [OK]
Hint: Multiply width and height to get area from computed property [OK]
Common Mistakes:
Confusing stored and computed properties
Expecting area to be zero by default
Thinking code causes compilation error
4. Identify the error in this Swift code using a computed property:
struct Circle {
var radius: Double
var diameter: Double {
get {
return radius * 2
}
set {
radius = newValue / 2
}
}
}
let c = Circle(radius: 5)
c.diameter = 20
print(c.radius)
medium
A. Cannot assign to property 'radius' because 'c' is a constant
B. Missing return keyword in getter
C. Setter syntax is incorrect
D. No error, code runs and prints 10
Solution
Step 1: Analyze variable mutability
Variable 'c' is declared with 'let', making it immutable (constant).
Step 2: Understand setter behavior
Setter tries to modify 'radius' property, but 'c' is constant, so assignment is not allowed.
Final Answer:
Cannot assign to property 'radius' because 'c' is a constant -> Option A
Quick Check:
Constant instance cannot change properties via setter [OK]
Hint: Use var, not let, to allow property setters to modify instance [OK]
Common Mistakes:
Ignoring that 'let' makes instance immutable
Thinking setter syntax is wrong
Missing return keyword confusion
5. You want to create a Swift struct Temperature that stores a temperature in Celsius and has a computed property fahrenheit to get and set the temperature in Fahrenheit. Which implementation correctly updates Celsius when Fahrenheit is set?
hard
A. struct Temperature {
var celsius: Double
var fahrenheit: Double {
get { return celsius * 9 / 5 + 32 }
set { celsius = (newValue - 32) * 5 / 9 }
}
}
B. struct Temperature {
var celsius: Double
var fahrenheit: Double {
get { return celsius + 32 }
set { celsius = newValue - 32 }
}
}
C. struct Temperature {
var celsius: Double
var fahrenheit: Double {
get { return celsius * 2 + 30 }
set { celsius = (newValue - 30) / 2 }
}
}
D. struct Temperature {
var celsius: Double
var fahrenheit: Double {
get { return celsius * 5 / 9 + 32 }
set { celsius = (newValue - 32) * 9 / 5 }
}
}
struct Temperature {
var celsius: Double
var fahrenheit: Double {
get { return celsius * 9 / 5 + 32 }
set { celsius = (newValue - 32) * 5 / 9 }
}
} uses correct formulas in getter and setter. The other options use incorrect formulas.
Final Answer:
The implementation with correct conversion formulas -> Option A
Quick Check:
Correct formulas = struct Temperature {
var celsius: Double
var fahrenheit: Double {
get { return celsius * 9 / 5 + 32 }
set { celsius = (newValue - 32) * 5 / 9 }
}
} [OK]
Hint: Use correct math formulas for temperature conversion in getter/setter [OK]
Common Mistakes:
Mixing up Celsius and Fahrenheit formulas
Using addition instead of multiplication
Forgetting to update Celsius in setter
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.