In most object-oriented programming languages, our type choices are limited. In Swift, however, we have numerous choices. This allows us to use the right type for the right situation. Understanding how the different types work is essential to writing good, stable code.
In this chapter, we looked at the different types we can use in Swift and emphasized the difference between value and reference types. Apple has said that value types should be preferred over reference types. We did look at areas, such as recursive data types, that require reference types.
We also discussed how we can optimize our code by using the final keyword when using reference types. In the next chapter, we will look at how we can avoid using a class hierarchy by using extensions.