🔴Protocol Extensions

  • provide default implementations. (dynamic method dispatch) 👉 📗 參考arrow-up-right

  • add new functionalities: (static method dispatch)

    • add methods

    • add (convenience) initializers (but not convenience override init)

    • add subscripts

    • add computed properties

  • make existing types conform to protocol.

circle-exclamation

Protocol Definition vs. Protocol Extension

circle-info
  • Declaring a method inside the protocol (definition) creates an extension point – a method that we encourage conforming types to override.

  • If we put methods into the protocol extension but not the protocol definition, all conforming types still get the method, except now we’re making it harder for them to override. (💈例二)

  • define requirements for conforming types. (💈例一)

Conditional Protocol Extensions

Last updated