An enum method is a function defined inside an enum that can perform actions or return values related to the enum cases. It helps organize behavior specific to the enum.
Click to reveal answer
beginner
What is a computed property in a Swift enum?
A computed property calculates and returns a value each time it is accessed, instead of storing a value. In enums, it can provide extra information based on the current case.
Click to reveal answer
intermediate
How do you define a computed property inside a Swift enum?
You define it like a variable with the keyword var and provide a get block or just return a value directly without storing it.
Click to reveal answer
intermediate
Can enum methods in Swift modify the enum's cases?
No, enum methods cannot change the enum's cases because enums are value types and their cases are fixed. Methods can return new values or perform calculations but not alter the case itself.
Click to reveal answer
beginner
Give an example of a computed property in a Swift enum that returns a description string.
Example:
enum Direction {
case north, south, east, west
var description: String {
switch self {
case .north: return "Up"
case .south: return "Down"
case .east: return "Right"
case .west: return "Left"
}
}
}
Click to reveal answer
What keyword is used to define a computed property in a Swift enum?
Avar
Blet
Cfunc
Denum
✗ Incorrect
Computed properties are defined using the var keyword because they behave like variables that compute their value.
Can enum methods in Swift change the enum case itself?
AOnly for raw value enums
BYes, always
COnly if marked mutating
DNo, enum cases are fixed
✗ Incorrect
Enum cases are fixed and cannot be changed by methods. Methods can return new values but cannot modify the enum case.
Which of the following is a valid use of a computed property in an enum?
ACalculating a value based on the current case
BChanging the enum case
CStoring a value permanently
DDefining a new enum case
✗ Incorrect
Computed properties calculate and return values dynamically based on the enum's current case.
How do you access a computed property in a Swift enum?
ABy using square brackets
BBy calling it like a function with parentheses
CBy using dot notation without parentheses
DBy importing a special library
✗ Incorrect
Computed properties are accessed like variables using dot notation without parentheses.
What is the purpose of adding methods inside a Swift enum?
ATo store extra data permanently
BTo add behavior related to enum cases
CTo change the enum's raw values
DTo create new enum cases dynamically
✗ Incorrect
Methods inside enums help organize behavior and actions related to the enum cases.
Explain how computed properties work inside Swift enums and give an example.
Think about a variable that calculates its value each time you ask for it.
You got /3 concepts.
Describe the role of methods inside Swift enums and why they are useful.
Consider how you might add actions related to each enum case.
You got /3 concepts.
Practice
(1/5)
1. What is the purpose of adding methods to an enum in Swift?
easy
A. To inherit properties from other enums
B. To store additional data inside enum cases
C. To perform actions or calculations related to enum cases
D. To convert enums into classes automatically
Solution
Step 1: Understand enum methods
Enum methods allow you to add functions that perform tasks related to the enum's cases.
Step 2: Differentiate from other enum features
Enums do not store extra data like classes; methods help organize related actions.
Final Answer:
To perform actions or calculations related to enum cases -> Option C
Quick Check:
Enum methods = perform actions [OK]
Hint: Methods in enums perform actions tied to cases [OK]
Common Mistakes:
Thinking enums can inherit from other enums
Confusing methods with stored properties
Assuming enums convert to classes automatically
2. Which of the following is the correct syntax to declare a computed property inside an enum in Swift?
easy
A. static var description: String = "Example"
B. func description() -> String { return "Example" }
C. let description = "Example"
D. var description: String { return "Example" }
Solution
Step 1: Identify computed property syntax
Computed properties use var with a code block returning a value, like var name: Type { ... }.
Step 2: Check options
var description: String { return "Example" } matches computed property syntax; B is a method, C is a stored property, D is a static stored property.
Final Answer:
var description: String { return "Example" } -> Option D
Quick Check:
Computed property syntax = var with braces [OK]
Hint: Computed properties use var with braces returning a value [OK]
Common Mistakes:
Using func instead of var for computed properties
Declaring computed properties as let constants
Confusing static stored properties with computed ones
3. Consider this Swift enum with a computed property and method:
enum Direction {
case north, south, east, west
var isVertical: Bool {
return self == .north || self == .south
}
func description() -> String {
switch self {
case .north: return "Up"
case .south: return "Down"
case .east: return "Right"
case .west: return "Left"
}
}
}
let dir = Direction.east
print(dir.isVertical)
print(dir.description())
What is the output?
medium
A. false
Right
B. true
Right
C. false
East
D. true
East
Solution
Step 1: Evaluate computed property isVertical
For Direction.east, isVertical checks if east == north or south, which is false.
Step 2: Evaluate description() method
Switch on east returns "Right" string.
Final Answer:
false
Right -> Option A
Quick Check:
east isVertical = false, description = Right [OK]
Hint: Check enum case matches in computed property and switch [OK]
Common Mistakes:
Assuming east is vertical
Confusing method return values with case names
Forgetting to call method with parentheses
4. This Swift enum code has an error:
enum Status {
case success, failure
var message: String {
switch self {
case .success:
return "Success"
case .failure
return "Failure"
}
}
}
What is the error and how to fix it?
medium
A. Computed property must be a function; change to func message() -> String
B. Missing colon after case .failure; add ':' after .failure
C. Enum cases must have raw values; add raw values to cases
D. Return statements are not allowed in computed properties; remove returns
Solution
Step 1: Identify syntax error in switch cases
Case .failure is missing a colon ':' after it, causing a syntax error.
Step 2: Fix the syntax
Add ':' after case .failure to correct the switch syntax.
Final Answer:
Missing colon after case .failure; add ':' after .failure -> Option B
5. You want to create an enum Light with cases red, yellow, and green. Add a computed property time that returns the duration in seconds for each light: red = 30, yellow = 5, green = 25. Also add a method next() that returns the next light in the traffic cycle (red -> green -> yellow -> red). Which implementation is correct?
hard
A. enum Light {
case red, yellow, green
var time: Int {
switch self {
case .red: return 30
case .yellow: return 5
case .green: return 25
}
}
func next() -> Light {
switch self {
case .red: return .green
case .green: return .yellow
case .yellow: return .red
}
}
}
B. enum Light {
case red, yellow, green
func time() -> Int {
if self == .red { return 30 }
else if self == .yellow { return 5 }
else { return 25 }
}
func next() -> Light {
if self == .red { return .yellow }
else if self == .yellow { return .green }
else { return .red }
}
}
C. enum Light {
case red, yellow, green
var time: Int {
if self == .red { return 30 }
else if self == .yellow { return 5 }
else { return 25 }
}
func next() -> Light {
switch self {
case .red: return .yellow
case .yellow: return .green
case .green: return .red
}
}
}
D. enum Light {
case red, yellow, green
var time: Int {
switch self {
case .red: return 25
case .yellow: return 30
case .green: return 5
}
}
func next() -> Light {
switch self {
case .red: return .green
case .green: return .yellow
case .yellow: return .red
}
}
}
Solution
Step 1: Check computed property time values
enum Light {
case red, yellow, green
var time: Int {
switch self {
case .red: return 30
case .yellow: return 5
case .green: return 25
}
}
func next() -> Light {
switch self {
case .red: return .green
case .green: return .yellow
case .yellow: return .red
}
}
} correctly returns 30 for red, 5 for yellow, and 25 for green as required.
Step 2: Check next() method cycle order
enum Light {
case red, yellow, green
var time: Int {
switch self {
case .red: return 30
case .yellow: return 5
case .green: return 25
}
}
func next() -> Light {
switch self {
case .red: return .green
case .green: return .yellow
case .yellow: return .red
}
}
} cycles red -> green -> yellow -> red, matching the problem statement.
Final Answer:
enum Light {
case red, yellow, green
var time: Int {
switch self {
case .red: return 30
case .yellow: return 5
case .green: return 25
}
}
func next() -> Light {
switch self {
case .red: return .green
case .green: return .yellow
case .yellow: return .red
}
}
} -> Option A
Quick Check:
Correct time values and cycle order = enum Light {
case red, yellow, green
var time: Int {
switch self {
case .red: return 30
case .yellow: return 5
case .green: return 25
}
}
func next() -> Light {
switch self {
case .red: return .green
case .green: return .yellow
case .yellow: return .red
}
}
} [OK]
Hint: Match switch cases exactly to problem requirements [OK]
Common Mistakes:
Mixing up time values for colors
Incorrect next() cycle order
Using func instead of computed property for time
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.