Introducing generics
The concept of generics has been around for a while, so it should not be a new concept to developers coming from languages such as Java or C#. The Swift implementation of generics is very similar to these languages. For those developers coming from languages that do not have generics, such as Objective-C, they might seem a bit foreign at first, but once you start using them, you will realize how powerful they are.
Generics allow us to write very flexible and reusable code that avoids duplication. With a type-safe language, such as Swift, we often need to write functions, classes, and structures that are valid for multiple types. Without generics, we need to write separate functions for each type we wish to support; however, with generics, we can write one generic function to provide the functionality for multiple types. Generics allow us to tell a function or type, "I know Swift is a type-safe language, but I do not know the type that will be needed yet...