protocolDescribable{funcdescribe()->String}extensionDescribable{funcdescribe()->String{return"This is the number \(self)"}}//Int使用默认的协议实现extensionInt:Describable{}extensionString:Describable{funcdescribe()->String{return"This is the string \"\(self)\""}}let number:Describable=42print(number.describe())// 输出:This is the number 42let text:Describable="Hello"print(text.describe())// 输出:This is the string "Hello"
枚举实现协议
enumPen:Printable{case normal
}enumBook:Printable{case fiction, nonFiction, biography
funcprintDetails()->String{switchself{case.fiction:return"Fiction Book"case.nonFiction:return"Non-Fiction Book"case.biography:return"Biography Book"}}}let pen =Pen.normal
print(pen.printDetails())//This is a printable item.let book =Book.fiction
print(book.printDetails())// 输出:Fiction Book
protocolRawRepresentablePrintable:RawRepresentable{funcprintRawValue()}extensionRawRepresentablePrintable{funcprintRawValue(){print("Raw value: \(self.rawValue)")}}enumDirection:Int,RawRepresentablePrintable{case north =1case south =2case east =3case west =4}let direction =Direction.north
direction.printRawValue()// 输出:Raw value: 1