Bird
Raised Fist0
Swiftprogramming~20 mins

Methods in structs in Swift - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Struct Methods Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2: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)
ACompilation error due to missing mutating keyword
B1
C0
DRuntime error
Attempts:
2 left
💡 Hint
Remember that methods that change properties in structs must be marked mutating.
❓ Predict Output
intermediate
2: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())
ARuntime error
B7
CCompilation error: missing return statement
D12
Attempts:
2 left
💡 Hint
The area is width multiplied by height.
🔧 Debug
advanced
2: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
    }
}
Adeposit method must return a value
Bbalance is a constant and cannot be changed
CMethod must be marked mutating to modify balance
DStructs cannot have methods that modify properties
Attempts:
2 left
💡 Hint
Think about how structs handle property changes inside methods.
❓ Predict Output
advanced
2: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)
A0 0
B5 7
CCompilation error: cannot assign to self
DRuntime error
Attempts:
2 left
💡 Hint
Struct methods can assign a new value to self if marked mutating.
🧠 Conceptual
expert
2: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?
ABecause structs are value types and mutating methods signal that the method changes the instance itself
BBecause all methods in structs must be mutating by default
CBecause mutating methods run on a separate thread
DBecause mutating methods are only allowed in classes, not structs
Attempts:
2 left
💡 Hint
Think about how value types behave when changed inside methods.

Practice

(1/5)
1.

What is the main purpose of a method inside a Swift struct?

easy
A. To define actions the struct can perform
B. To store data values
C. To create a new struct type
D. To import external libraries

Solution

  1. Step 1: Understand what methods do in structs

    Methods are functions inside structs that define behaviors or actions the struct can perform.
  2. Step 2: Differentiate methods from data storage

    Properties store data, while methods perform actions using that data.
  3. Final Answer:

    To define actions the struct can perform -> Option A
  4. Quick Check:

    Methods = actions in structs [OK]
Hint: Methods = actions inside structs, properties = data [OK]
Common Mistakes:
  • Confusing methods with properties
  • Thinking methods create new types
  • Mixing methods with import statements
2.

Which keyword must be used before a method in a Swift struct if it changes the struct's properties?

easy
A. final
B. override
C. static
D. mutating

Solution

  1. Step 1: Recall Swift's rule for modifying struct properties

    Struct methods that change properties must be marked with mutating to allow modification.
  2. Step 2: Identify the correct keyword

    Among the options, only mutating enables property changes inside struct methods.
  3. Final Answer:

    mutating -> Option D
  4. Quick Check:

    Change properties = mutating [OK]
Hint: Use mutating for methods that change struct properties [OK]
Common Mistakes:
  • Using override in structs (only for classes)
  • Confusing static with mutating
  • Omitting mutating keyword causes errors
3.

What will be the output of this Swift code?

struct Counter {
    var count = 0
    mutating func increment() {
        count += 1
    }
}

var myCounter = Counter()
myCounter.increment()
print(myCounter.count)
medium
A. 0
B. 1
C. Error: Cannot modify property
D. nil

Solution

  1. Step 1: Understand the mutating method increment()

    The method increases count by 1 and is marked mutating, so it can change the property.
  2. Step 2: Trace the code execution

    myCounter starts with count = 0, increment() adds 1, so count becomes 1, then printed.
  3. Final Answer:

    1 -> Option B
  4. Quick Check:

    mutating method changes count to 1 [OK]
Hint: mutating methods can change properties, so count increments [OK]
Common Mistakes:
  • Forgetting mutating causes error
  • Expecting count to stay 0
  • Thinking print outputs nil
4.

Identify the error in this Swift struct method and how to fix it:

struct Score {
    var points = 0
    func addPoint() {
        points += 1
    }
}
medium
A. Method should return points value
B. Property points must be let instead of var
C. Method must be marked mutating to change points
D. No error, code runs fine

Solution

  1. Step 1: Check if method modifies a property

    addPoint() tries to increase points by 1, which modifies the struct's property.
  2. Step 2: Recall Swift rule for modifying properties in structs

    Methods that modify properties must be marked mutating, otherwise compiler error occurs.
  3. Final Answer:

    Method must be marked mutating to change points -> Option C
  4. Quick Check:

    Modify property in struct method = mutating needed [OK]
Hint: Add mutating keyword to methods that change struct properties [OK]
Common Mistakes:
  • Omitting mutating keyword
  • Changing var to let (makes property immutable)
  • Thinking method must return value
5.

Given this struct, which method correctly resets the level property to 1?

struct Game {
    var level = 5

    // Which method resets level to 1?
}
hard
A. mutating func reset() { level = 1 }
B. mutating func reset() -> Int { return 1 }
C. static func reset() { level = 1 }
D. func reset() { level = 1 }

Solution

  1. Step 1: Identify method that changes a property

    Resetting level means changing the property, so method must be mutating.
  2. Step 2: Check each option

    A lacks mutating, so cannot modify property. B is mutating but only returns 1 without changing level. C is static and cannot access instance property. D is mutating and correctly sets level to 1.
  3. Final Answer:

    mutating func reset() { level = 1 } -> Option A
  4. Quick Check:

    Change property in struct method = mutating func [OK]
Hint: Use mutating func to change struct properties inside methods [OK]
Common Mistakes:
  • Forgetting mutating keyword
  • Using static func to access instance properties
  • Returning value instead of changing property
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard