Bird
Raised Fist0
Swiftprogramming~10 mins

Protocol declaration syntax 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 declare a protocol named MyProtocol.

Swift
protocol [1] {
    // protocol requirements
}
Drag options to blanks, or click blank then click option'
AMyProtocol
Bclass
Cfunc
Dstruct
Attempts:
3 left
💡 Hint
Common Mistakes
Using keywords like class or struct instead of the protocol name.
Forgetting to write the protocol name after protocol.
2fill in blank
medium

Complete the code to declare a protocol with a method requirement named doSomething().

Swift
protocol Actionable {
    func [1]()
}
Drag options to blanks, or click blank then click option'
AdoSomethingElse
BperformAction
CdoSomething
Dexecute
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different method name than the one required.
Omitting the parentheses after the method name.
3fill in blank
hard

Fix the error in the protocol declaration by completing the code.

Swift
protocol [1] {
    func start()
}
Drag options to blanks, or click blank then click option'
AStartable
BStartable}
CStartable()
DStartable;
Attempts:
3 left
💡 Hint
Common Mistakes
Adding parentheses or braces incorrectly after the protocol name.
Missing the opening brace {.
4fill in blank
hard

Fill both blanks to declare a protocol named Drawable with a property requirement color of type String.

Swift
protocol [1] {
    var [2]: String { get set }
}
Drag options to blanks, or click blank then click option'
ADrawable
BDrawableProtocol
Ccolor
Dcolour
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different protocol name than Drawable.
Spelling the property name as colour instead of color.
5fill in blank
hard

Fill all three blanks to declare a protocol named Resizable with a method resize(to:) that takes a Double parameter named size.

Swift
protocol [1] {
    func [2](to [3]: Double)
}
Drag options to blanks, or click blank then click option'
AResizable
Bresize
Csize
Dscale
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect protocol or method names.
Using a different parameter name than size.

Practice

(1/5)
1. What keyword is used in Swift to declare a protocol?
easy
A. interface
B. class
C. protocol
D. struct

Solution

  1. Step 1: Recall Swift syntax for protocols

    In Swift, protocols are declared using the keyword protocol.
  2. Step 2: Compare options with known syntax

    Options like interface are from other languages, and class or struct declare types, not protocols.
  3. Final Answer:

    protocol -> Option C
  4. Quick Check:

    Keyword for protocol declaration = protocol [OK]
Hint: Remember: Swift uses 'protocol' keyword for protocols [OK]
Common Mistakes:
  • Confusing 'protocol' with 'interface' from other languages
  • Using 'class' or 'struct' instead of 'protocol'
  • Misspelling the keyword
2. Which of the following is the correct syntax to declare a protocol named Vehicle in Swift?
easy
A. protocol Vehicle {}
B. protocol Vehicle() {}
C. protocol Vehicle[] {}
D. protocol Vehicle<> {}

Solution

  1. Step 1: Understand protocol declaration syntax

    Protocols are declared with the keyword protocol, followed by the name and curly braces without parentheses or brackets.
  2. Step 2: Check each option

    protocol Vehicle {} uses correct syntax: protocol Vehicle {}. Options B, C, and D incorrectly add parentheses or brackets.
  3. Final Answer:

    protocol Vehicle {} -> Option A
  4. Quick Check:

    Protocol declaration uses curly braces only [OK]
Hint: Protocols use curly braces, no parentheses or brackets [OK]
Common Mistakes:
  • Adding parentheses after protocol name
  • Using square or angle brackets incorrectly
  • Omitting curly braces
3. What will be the output of this Swift code?
protocol Greetable {
    func greet() -> String
}

struct Person: Greetable {
    func greet() -> String {
        return "Hello!"
    }
}

let p = Person()
print(p.greet())
medium
A. Hello!
B. greet()
C. Error: Missing protocol method implementation
D. nil

Solution

  1. Step 1: Understand protocol and struct implementation

    The protocol Greetable requires a method greet() returning a String. The struct Person implements this method returning "Hello!".
  2. Step 2: Analyze the print statement

    Creating an instance p of Person and calling p.greet() returns "Hello!", which is printed.
  3. Final Answer:

    Hello! -> Option A
  4. Quick Check:

    Implemented protocol method returns "Hello!" [OK]
Hint: Protocol methods must be implemented; output is returned string [OK]
Common Mistakes:
  • Assuming protocol methods run automatically without implementation
  • Expecting error due to protocol conformance
  • Confusing method name with output
4. Identify the error in this protocol declaration:
protocol Drawable {
    func draw()
    var color: String
}
medium
A. func draw() must have a return type
B. Protocol properties must specify { get } or { get set }
C. Protocol name must start with uppercase letter
D. Missing parentheses after func draw

Solution

  1. Step 1: Check protocol property declaration rules

    In Swift, protocol properties must declare if they are readable or writable using { get } or { get set }.
  2. Step 2: Analyze the given property

    The property color: String lacks { get } or { get set }, causing a syntax error.
  3. Final Answer:

    Protocol properties must specify { get } or { get set } -> Option B
  4. Quick Check:

    Protocol property syntax requires access specifiers [OK]
Hint: Always add { get } or { get set } to protocol properties [OK]
Common Mistakes:
  • Omitting { get } or { get set } in protocol properties
  • Adding parentheses to property declarations
  • Thinking protocol names must be uppercase
5. You want to declare a protocol Identifiable that requires a read-only id property of type String and a method identify() that returns a String. Which is the correct declaration?
hard
A. protocol Identifiable { let id: String func identify() -> String }
B. protocol Identifiable { var id: String func identify() }
C. protocol Identifiable { var id: String { get set } func identify() -> String }
D. protocol Identifiable { var id: String { get } func identify() -> String }

Solution

  1. Step 1: Define read-only property in protocol

    A read-only property in a protocol must be declared with { get } to indicate it can be read but not written.
  2. Step 2: Check method signature

    The method identify() must specify return type String as required.
  3. Step 3: Evaluate options

    protocol Identifiable { var id: String { get } func identify() -> String } correctly declares var id: String { get } and func identify() -> String. protocol Identifiable { var id: String func identify() } misses { get } and return type. protocol Identifiable { let id: String func identify() -> String } uses let which is invalid in protocols. protocol Identifiable { var id: String { get set } func identify() -> String } allows writing with { get set }, not read-only.
  4. Final Answer:

    protocol Identifiable { var id: String { get } func identify() -> String } -> Option D
  5. Quick Check:

    Read-only property uses { get } and method return type matches [OK]
Hint: Use { get } for read-only properties in protocols [OK]
Common Mistakes:
  • Using 'let' instead of 'var' in protocol
  • Omitting { get } for read-only properties
  • Missing return type in method declaration
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