To add additional functionality to an existing class or struct we can: code example

Example 1: create extension swift

extension Example {
  // code here for the Example type...
}

Example 2: extension swift

// A basic class
class MyClass {
    private let a = 5

    func getA() -> Int {
        return self.a
    } 
}

// An extension of that class - adds a function
extension MyClass {
    // Add an amount to the value of `a`
    func add(_ amount: Int) -> Int {
      	// self can be used to access MyClass' members
        return self.getA() + amount
    }
}

var mc = MyClass()

print(mc.getA()) // Direct member of the class (Output: 5)

// Function from extension - called as if the function 
// was in the original definition. (Output: 10)
print(mc.add(5))