Challenge - 5 Problems
Struct Methods Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of method modifying struct property
What is the output of this Swift code?
Swift
struct Counter { var count = 0 mutating func increment() { count += 1 } } var c = Counter() c.increment() print(c.count)
Attempts:
2 left
💡 Hint
Remember that methods that change properties in structs must be marked mutating.
✗ Incorrect
The method increment() increases count by 1. Because it is marked mutating, it can modify the struct's property. So after calling increment(), count becomes 1.
❓ Predict Output
intermediate2:00remaining
Output of method returning computed value
What does this Swift code print?
Swift
struct Rectangle { var width: Int var height: Int func area() -> Int { return width * height } } let rect = Rectangle(width: 3, height: 4) print(rect.area())
Attempts:
2 left
💡 Hint
The area is width multiplied by height.
✗ Incorrect
The area() method returns width * height, which is 3 * 4 = 12.
🔧 Debug
advanced2:00remaining
Why does this method cause a compile error?
This Swift struct method tries to modify a property but causes a compile error. Why?
Swift
struct BankAccount { var balance: Double = 0.0 func deposit(amount: Double) { balance += amount } }
Attempts:
2 left
💡 Hint
Think about how structs handle property changes inside methods.
✗ Incorrect
In Swift, methods that modify properties of a struct must be marked with the mutating keyword. Without it, the compiler prevents modification.
❓ Predict Output
advanced2:00remaining
Output of method with self reassignment
What is the output of this Swift code?
Swift
struct Point { var x: Int var y: Int mutating func moveToOrigin() { self = Point(x: 0, y: 0) } } var p = Point(x: 5, y: 7) p.moveToOrigin() print(p.x, p.y)
Attempts:
2 left
💡 Hint
Struct methods can assign a new value to self if marked mutating.
✗ Incorrect
The moveToOrigin() method replaces self with a new Point at (0,0). Because it is mutating, this is allowed. So p.x and p.y become 0.
🧠 Conceptual
expert2:00remaining
Why must methods modifying struct properties be marked mutating?
In Swift, why do methods that change properties of a struct need the mutating keyword?
Attempts:
2 left
💡 Hint
Think about how value types behave when changed inside methods.
✗ Incorrect
Structs are value types, so their instances are copied when assigned or passed. Marking a method mutating tells Swift the method will modify the instance, allowing changes to the copy.