Recall & Review
beginner
What is a protocol in Swift?
A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality. Classes, structs, or enums can adopt protocols to provide actual implementations.
Click to reveal answer
beginner
How can a protocol be used as a type in Swift?
You can use a protocol as a type to declare variables, constants, or function parameters. This means the value can be any instance of a type that conforms to that protocol.
Click to reveal answer
intermediate
Why use protocols as types instead of concrete types?
Using protocols as types allows for flexible and reusable code. It lets you write functions or variables that work with any type that meets the protocol’s requirements, not just one specific type.
Click to reveal answer
intermediate
Can you store different types conforming to the same protocol in one array?
Yes! Because the protocol can be used as a type, you can create an array of that protocol type and store different concrete types that conform to it.
Click to reveal answer
advanced
What happens if a protocol has associated types or Self requirements? Can it be used as a type?
Protocols with associated types or Self requirements cannot be used directly as types because the compiler needs to know the exact type. You can use generics or type erasure to work around this.
Click to reveal answer
Which of the following can be used as a type in Swift?
✗ Incorrect
Protocols without associated types or Self requirements can be used as types. Those with associated types or Self requirements cannot be used directly as types.
What does it mean to use a protocol as a type?
✗ Incorrect
Using a protocol as a type means variables or parameters can hold any instance of a type that conforms to that protocol.
Can you have an array of different types if they all conform to the same protocol?
✗ Incorrect
An array typed as the protocol can hold different types that conform to that protocol.
Why might you choose to use a protocol as a type?
✗ Incorrect
Using protocols as types allows writing flexible and reusable code that works with any conforming type.
If a protocol has an associated type, can you declare a variable of that protocol type directly?
✗ Incorrect
Protocols with associated types cannot be used directly as types; generics or type erasure are needed.
Explain how using a protocol as a type helps in writing flexible Swift code.
Think about how you can use one variable to hold many different types.
You got /4 concepts.
Describe the limitation of using protocols with associated types as types and how to work around it.
Consider why the compiler needs more information about the type.
You got /4 concepts.