swift学习笔记(一)protocol和extension

1.协议

  1. 使用protocol来声明一个协议
```
    protocol TestProtocol{
    var description:String{get}
    
    mutating func printDescritpion()
    }
```
  1. Classes, enumerations,和 structs都可以继承一个协议
```
class TestClass:TestProtocol{
    var description: String = "TestClass"
    
    var length: Int  {
        get{
            return self.description.characters.count
        }
    }
    
    func printDescritpion() {
        self.description += "---\(length)"
        print(self.description + " \(length)")
    }
}

TestClass().printDescritpion()

struct TestStruct: TestProtocol{
    var sum  = 1024
    var description: String = "TestStuct"
    
    mutating func printDescritpion() {
        self.description += "---\(sum)"
        print(self.description)
    }
}
```

2. extension -- 扩展

可以给自定义的类,或已有的cocoa框架提供的类,甚至类库或者框架里面的类添加 新的 **属性(成员变量)或者 方法

  1. 给已有的类添加

    extension String:TestProtocol{
        var description : String{
            return "the string is \(self)"
        }
        
        mutating func printDescritpion() {
            self += " fuck you"
        }
    }
    
    
  2. 给自定义的类添加

        extension TestClass{
        func eat(){
            print("吃饭饭")
        }
    }
    

你可能感兴趣的:(swift学习笔记(一)protocol和extension)