Bird
Raised Fist0
Swiftprogramming~10 mins

Structs are value types (copy on assign) in Swift - Interactive Code Practice

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

Complete the code to create a struct named Point.

Swift
struct [1] {
    var x: Int
    var y: Int
}
Drag options to blanks, or click blank then click option'
APoint
BClass
CRectangle
DCircle
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Class' instead of a struct name.
Choosing a shape name unrelated to the example.
2fill in blank
medium

Complete the code to assign one struct instance to another.

Swift
var p1 = Point(x: 5, y: 10)
var p2 = [1]
Drag options to blanks, or click blank then click option'
Ap1
BPoint(x: 0, y: 0)
CPoint()
Dp2
Attempts:
3 left
💡 Hint
Common Mistakes
Creating a new instance instead of copying.
Assigning the variable to itself.
3fill in blank
hard

Fix the error in copying and modifying a struct instance.

Swift
var p1 = Point(x: 3, y: 4)
var p2 = p1
p2.[1] = 10
Drag options to blanks, or click blank then click option'
Az
Bwidth
Cx
Dheight
Attempts:
3 left
💡 Hint
Common Mistakes
Using a property name not defined in the struct.
Trying to modify the original instance instead of the copy.
4fill in blank
hard

Fill both blanks to create a copy of a struct and change its property.

Swift
var original = Point(x: 1, y: 2)
var copy = [1]
copy.[2] = 5
Drag options to blanks, or click blank then click option'
Aoriginal
Bcopy
Cx
Dy
Attempts:
3 left
💡 Hint
Common Mistakes
Modifying the original instead of the copy.
Using the wrong property name.
5fill in blank
hard

Fill all three blanks to demonstrate that modifying a copy does not affect the original struct.

Swift
var a = Point(x: 7, y: 8)
var b = [1]
b.[2] = 0
print(a.[3])
Drag options to blanks, or click blank then click option'
Aa
Bx
Dy
Attempts:
3 left
💡 Hint
Common Mistakes
Modifying the original struct instead of the copy.
Printing the wrong property.

Practice

(1/5)
1. What happens when you assign one struct variable to another in Swift?
easy
A. A new copy of the struct data is created.
B. Both variables point to the same data in memory.
C. The original struct is deleted.
D. The struct becomes a class automatically.

Solution

  1. Step 1: Understand struct assignment behavior

    Structs in Swift are value types, so assigning one struct to another copies the data.
  2. Step 2: Compare with reference types

    Unlike classes, structs do not share references; each variable has its own copy.
  3. Final Answer:

    A new copy of the struct data is created. -> Option A
  4. Quick Check:

    Struct assignment = copy data [OK]
Hint: Structs copy data on assignment, not references [OK]
Common Mistakes:
  • Thinking structs share data like classes
  • Assuming assignment links variables
  • Confusing structs with reference types
2. Which of the following is the correct way to define a struct in Swift?
easy
A. struct Person = { var name: String }
B. struct Person { var name: String }
C. class Person { var name: String }
D. struct Person() { var name: String }

Solution

  1. Step 1: Recall Swift struct syntax

    Structs are defined using the keyword struct followed by the name and braces containing properties.
  2. Step 2: Identify correct syntax

    The correct syntax is struct Person { var name: String }. Using = after the name is invalid, using class defines a class instead of a struct, and adding parentheses like Person() is incorrect.
  3. Final Answer:

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

    Struct syntax = struct Name { properties } [OK]
Hint: Use 'struct Name { }' to define structs [OK]
Common Mistakes:
  • Using class keyword instead of struct
  • Adding parentheses after struct name
  • Using equals sign in struct definition
3. Consider this Swift code:
struct Point { var x: Int; var y: Int }
var p1 = Point(x: 5, y: 10)
var p2 = p1
p2.x = 20
print(p1.x)

What is the output?
medium
A. 20
B. Compilation error
C. 5
D. 10

Solution

  1. Step 1: Understand struct copying on assignment

    Assigning p1 to p2 copies the data, so p2 is a separate copy.
  2. Step 2: Analyze mutation effect

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

    5 -> Option C
  4. Quick Check:

    Struct copy means original unchanged [OK]
Hint: Changing copy doesn't affect original struct [OK]
Common Mistakes:
  • Assuming p1.x changes to 20
  • Confusing structs with reference types
  • Expecting runtime error on assignment
4. This Swift code tries to update a struct inside a function:
struct Counter { var count: Int }
func increment(counter: Counter) {
    var counter = counter
    counter.count += 1
}
var c = Counter(count: 0)
increment(counter: c)
print(c.count)

What is the output and why?
medium
A. 0, because the function modifies a copy, not the original
B. 1, because the function updates the original struct
C. Compilation error due to modifying parameter
D. Runtime error due to immutable struct

Solution

  1. Step 1: Understand parameter passing for structs

    Structs are passed by value, so the function receives a copy of c.
  2. Step 2: Analyze mutation inside function

    The function modifies its local copy, but c outside remains unchanged.
  3. Final Answer:

    0, because the function modifies a copy, not the original -> Option A
  4. Quick Check:

    Structs passed by value = original unchanged [OK]
Hint: Structs passed to functions are copies, not originals [OK]
Common Mistakes:
  • Expecting original struct to change
  • Thinking function parameter is reference
  • Assuming compilation or runtime error
5. You want to create a Swift struct that tracks a score and allows updating it inside a method. Which approach correctly updates the struct's property?
hard
A. Use a global variable to hold the struct and update it.
B. Use a non-mutating method and assign a new struct to self.
C. Declare the struct as a class to allow property changes.
D. Use a mutating method inside the struct to change the property.

Solution

  1. Step 1: Recall how to modify struct properties

    Structs are value types; to modify properties inside methods, the method must be marked mutating.
  2. Step 2: Evaluate options

    Use a mutating method inside the struct to change the property. correctly uses a mutating method. Use a non-mutating method and assign a new struct to self. is incorrect because non-mutating methods cannot change properties. Declare the struct as a class to allow property changes. changes the type to class, which is different. Use a global variable to hold the struct and update it. uses a global variable, which is not ideal.
  3. Final Answer:

    Use a mutating method inside the struct to change the property. -> Option D
  4. Quick Check:

    Mutating methods update struct properties [OK]
Hint: Mark methods mutating to change struct properties [OK]
Common Mistakes:
  • Trying to modify properties in non-mutating methods
  • Confusing structs with classes for mutability
  • Using global variables instead of methods
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