Search icon
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
Learning Swift Second Edition - Second Edition

You're reading from  Learning Swift Second Edition - Second Edition

Product type Book
Published in Mar 2016
Publisher
ISBN-13 9781785887512
Pages 308 pages
Edition 2nd Edition
Languages
Author (1):
Andrew J Wagner Andrew J Wagner
Profile icon Andrew J Wagner

Table of Contents (19) Chapters

Learning Swift Second Edition
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface
1. Introducing Swift 2. Building Blocks – Variables, Collections, and Flow Control 3. One Piece at a Time – Types, Scopes, and Projects 4. To Be or Not To Be – Optionals 5. A Modern Paradigm – Closures and Functional Programming 6. Make Swift Work For You – Protocols and Generics 7. Everything Is Connected – Memory Management 8. Paths Less Traveled – Error Handling 9. Writing Code the Swift Way – Design Patterns and Techniques 10. Harnessing the Past – Understanding and Translating Objective-C 11. A Whole New World – Developing an App 12. What's Next? – Resources, Advice, and the Next Steps Index

Extending generics


The two main generics that we will probably want to extend are arrays and dictionaries. These are the two most prominent containers provided by Swift and are used in virtually every app. Extending a generic type is simple once you understand that an extension itself does not need to be generic.

Adding methods to all forms of a generic

Knowing that an array is declared as struct Array<Element>, your first instinct to extend an array might look something similar to this:

extension Array<Element> { // Use of undeclared type 'Element'
    // ...
}

However, as you can see, you would get an error. Instead, you can simply leave out the placeholder specification and still use the Element placeholder inside your implementations. Your other instinct might be to declare Element as a placeholder for your individual methods:

extension Array {
    func someMethod<Element>(element: Element) {
        // ...
    }
}

This is more dangerous because the compiler doesn't detect...

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime}