Book Image

Swift 3 Protocol-Oriented Programming - Second Edition

By : Jon Hoffman
Book Image

Swift 3 Protocol-Oriented Programming - Second Edition

By: Jon Hoffman

Overview of this book

<p>One of the most important additions to the new features and capabilities of the Swift programming language was an overhaul of Protocols. Protocol-oriented programming and first class value semantics have now become two incredibly powerful concepts at the heart of Swift’s design.</p> <p>This book will help you understand the difference between object-oriented programming and protocol-oriented programming. It will demonstrate how to work with protocol-oriented programming using real world use cases. You will gain solid knowledge of the different types that can be used in Swift and the differences between value and reference types. You will be taught how to utilize the advanced features of protocol-oriented programming to boost the performance of your applications.</p> <p>By the end of the book, you will have a thorough understanding of protocol-oriented programming and how to utilize it to build powerful, practical applications.</p>
Table of Contents (14 chapters)
Swift 3 Protocol-Oriented Programming - Second Edition
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface

Associated types


An associated type declares a placeholder name that can be used instead of a type within a protocol. The actual type to be used is not specified until the protocol is adopted. While creating generic functions and types, we used a very similar syntax, as we have seen throughout this chapter. Defining associated types for a protocol, however, is a little different. We specify an associated type using the associatedtype keyword.

Let's see how to use associated types when we define a protocol. For this example, we will create a simple protocol named MyProtocol:

protocol MyProtocol { 
    associatedtype E 
     
    var items: [E] {get set} 
    mutating func add(item: E) 
} 

In this protocol, we declare an associatedtype named E. We then use that associated type as the type for the items array and also the parameter type for the add(item:) method. We can now create types that conform to this protocol by providing either a concrete type or a generic...