Bird
Raised Fist0
Swiftprogramming~10 mins

Comparing structs vs classes decision in Swift - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a struct named Person.

Swift
struct [1] {
    var name: String
    var age: Int
}
Drag options to blanks, or click blank then click option'
APerson
Bclass
Cvar
Dfunc
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'class' instead of the struct name.
Forgetting to name the struct.
2fill in blank
medium

Complete the code to create an instance of the struct Person.

Swift
let person = [1](name: "Alice", age: 30)
Drag options to blanks, or click blank then click option'
Afunc
Bclass
Cstruct
DPerson
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'class' or 'struct' keywords instead of the struct name.
Trying to call a function that does not exist.
3fill in blank
hard

Fix the error in the code to copy a struct instance correctly.

Swift
var person1 = Person(name: "Bob", age: 25)
var person2 = person1
person2.name = [1]
Drag options to blanks, or click blank then click option'
ACharlie
Bperson1
C"Charlie"
Dname
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to put quotes around the string.
Assigning a variable name instead of a string.
4fill in blank
hard

Fill both blanks to define a class and create its instance.

Swift
[1] PersonClass {
    var name: String
    init(name: String) {
        self.name = name
    }
}
let person = [2](name: "Dana")
Drag options to blanks, or click blank then click option'
Aclass
Bstruct
CPersonClass
DPersonStruct
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'struct' instead of 'class' to define a class.
Using the wrong name when creating an instance.
5fill in blank
hard

Fill all three blanks to compare struct and class behavior.

Swift
var struct1 = Person(name: "Eve", age: 40)
var struct2 = struct1
struct2.age [1] 41

var class1 = [2](name: "Frank")
var class2 = class1
class2.name [3] "George"
Drag options to blanks, or click blank then click option'
A=
BPersonClass
C!=
DPersonStruct
Attempts:
3 left
💡 Hint
Common Mistakes
Using '!=' instead of '=' for assignment.
Confusing struct and class names.

Practice

(1/5)
1. Which statement best describes when to use a struct instead of a class in Swift?
easy
A. Use struct when you want to share data between multiple parts of your app.
B. Use struct when you need inheritance and shared references.
C. Use struct for simple data that should be copied when assigned or passed.
D. Use struct only for UI elements like views.

Solution

  1. Step 1: Understand struct behavior

    Structs are value types, meaning they are copied when assigned or passed around.
  2. Step 2: Compare with class behavior

    Classes are reference types, shared by multiple references and support inheritance.
  3. Final Answer:

    Use struct for simple data that should be copied when assigned or passed. -> Option C
  4. Quick Check:

    Structs = copied data [OK]
Hint: Structs copy data; classes share references [OK]
Common Mistakes:
  • Confusing structs with classes as reference types
  • Thinking structs support inheritance
  • Using structs for shared mutable state
2. Which of the following is the correct way to declare a struct in Swift?
easy
A. class Person { var name: String }
B. struct Person { var name: String }
C. struct Person: Class { var name: String }
D. class Person: struct { var name: String }

Solution

  1. Step 1: Recall struct declaration syntax

    In Swift, structs are declared with the keyword struct followed by the name and braces.
  2. Step 2: Check each option

    struct Person { var name: String } is correct. Using class is incorrect for structs. Structs cannot inherit from Class, and classes cannot inherit from struct.
  3. Final Answer:

    struct Person { var name: String } -> Option B
  4. Quick Check:

    Struct declaration = struct Name { } [OK]
Hint: Structs start with 'struct' keyword, not 'class' [OK]
Common Mistakes:
  • Using 'class' keyword to declare a struct
  • Trying to inherit from a class in a struct
  • Mixing struct and class syntax
3. Consider this Swift code:
struct Point {
  var x: Int
  var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1
p2.x = 10
print(p1.x)

What is the output?
medium
A. 1
B. 10
C. 0
D. Compilation error

Solution

  1. Step 1: Understand struct copying behavior

    Assigning p1 to p2 copies the data because Point is a struct (value type).
  2. Step 2: Analyze mutation effect

    Changing p2.x to 10 does not affect p1.x, which remains 1.
  3. Final Answer:

    1 -> Option A
  4. Quick Check:

    Struct copy means original unchanged = 1 [OK]
Hint: Structs copy on assignment; original stays same [OK]
Common Mistakes:
  • Assuming p1.x changes when p2.x changes
  • Confusing structs with classes (reference types)
  • Expecting runtime error on mutation
4. This Swift code tries to share data between two variables:
class Counter {
  var count = 0
}

var c1 = Counter()
var c2 = c1
c2.count = 5
print(c1.count)

But the output is not as expected. What is the problem?
medium
A. Counter is a class, so c1 and c2 share the same instance
B. Counter is a class, but c2 is a copy, so changes don't reflect
C. Counter should be a struct to share data
D. Counter needs to conform to a protocol to share data

Solution

  1. Step 1: Identify class reference behavior

    Classes are reference types, so c1 and c2 point to the same object.
  2. Step 2: Understand shared mutation

    Changing c2.count to 5 changes the shared instance, so c1.count also becomes 5.
  3. Final Answer:

    Counter is a class, so c1 and c2 share the same instance -> Option A
  4. Quick Check:

    Classes share references = shared data [OK]
Hint: Classes share instances; structs copy data [OK]
Common Mistakes:
  • Thinking classes copy on assignment
  • Expecting structs to share data
  • Believing protocols affect sharing automatically
5. You are designing a Swift app that tracks user sessions. Each session has a unique ID and mutable state shared across multiple parts of the app. Which type should you choose and why?

Options:
A) Use a struct because it copies data and avoids bugs.
B) Use a class because it allows shared mutable state with identity.
C) Use a struct with inheritance to share state.
D) Use a class but avoid mutability to keep data safe.
hard
A. Use a struct because it copies data and avoids bugs.
B. Use a class but avoid mutability to keep data safe.
C. Use a struct with inheritance to share state.
D. Use a class because it allows shared mutable state with identity.

Solution

  1. Step 1: Analyze requirements for shared mutable state

    The session data must be shared and mutable across multiple parts, requiring a single shared instance.
  2. Step 2: Choose between struct and class

    Structs copy data, so changes in one copy won't reflect elsewhere. Classes share references and support identity, fitting the need.
  3. Step 3: Evaluate other options

    Structs do not support inheritance, so Use a struct with inheritance to share state. is invalid. Avoiding mutability in classes (Use a class but avoid mutability to keep data safe.) contradicts the requirement for mutable shared state.
  4. Final Answer:

    Use a class because it allows shared mutable state with identity. -> Option D
  5. Quick Check:

    Shared mutable state = class [OK]
Hint: Shared mutable data needs class, not struct [OK]
Common Mistakes:
  • Choosing struct for shared mutable state
  • Thinking structs support inheritance
  • Avoiding mutability in classes when needed
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