Up until this point, we had to define our entire custom type in a single file. However, it is sometimes useful to separate out part of our custom types into different files, or even just in the same file. To achieve this, Swift provides a feature called extensions. Extensions allow us to add additional functionality to existing types from anywhere.
This functionality is limited to additional functions and additional computed properties:
extension Building { var report: String { return "This building is \(self.squareFootage) sq ft" } func isLargerThanOtherBuilding(building: Building) -> Bool { return self.squareFootage > building.squareFootage } }
Note that, to define an extension, we use the extension
keyword, followed by the type that we would like to extend. Extensions can also be used on an existing class, struct, or enumeration, even those defined within Swift like String. Let's add an extension to String that allows us to repeat a string...