1. Agreement
  Swift uses protocol to define the protocol: 
protocol Exampleprotocol {    get  }    mutating func adjust ()}
Types, enumerations, and structs can all implement protocols:
classSimpleclass:exampleprotocol {var simpledescription:string="A very simple class."var anotherproperty:int=69105func Adjust () {simpledescription+="Now 100% adjusted."}}var a=Simpleclass () a.adjust ( ) Let Adescription=a.simpledescriptionstructSimplestructure:exampleprotocol {var simpledescription:string="A Simple Structure"mutating func adjust () {simpledescription+="(adjusted)"}}var b=simplestructure () b.adjust ( ) Let bdescription= B.simpledescription
2. Expansion
  Extensions are used to add new functionality to existing types (such as new methods or properties), and Swift uses extension to declare extensions: 
extension Int:exampleprotocol {    var simpledescription:string {        return"the Number \ (self)"    }    mutating func adjust () {        $}    } 7. simpledescription
Swift Learning 5---Protocol (Protocol) and extensions (extension)