Swift基礎語法學習總結
Swift高級語法學習總結
Swift語法總結補充(一)
1. 可選類型是一種類型,String?就是Optional<String>,所以函數參數也可以聲明為它
2. a??b??c 如果a有值返回a,a為nil返回b,b也也為nil,前面的整體結果就是nil返回c.條件是??前面的都必須是optional的,??后面的類型必須和??前面的一致,結果等價于三目運算符a!=nil?a!:b
3. 遵從GeneratorType協議的對象有一個next方法可以用來遍歷,你可以自定義generator遵循generatorType協議,自己就可以根據這個方法做循環,你在next方法中寫好遍歷的順序就好.
4. 遵從SequenceType協議的對象可以用for in來循環,每個SequenceType對象里面包含對應著一個generator,也可以獲取generator后做while循環,也可以直接寫for in循環,for in出來每項的值就是generator中next方法的返回值
5. 區間運算符...和..<其實是Range<T>類型的對象,這個對象有一個generate方法,返回的是RangeGenerator<T>類型結構體,它遵循GeneratorType協議,所以...和..< 也能做for in 循環
6. 數組過濾方法可以用閉包,如:oldArray.filter{ $0 > 30 },數組還有個根據數組值計算的的方法,oldArray.reduce(1,combine: {$0 + $1}) 結果就是1和數組中的每個元素相加
7. Int和string都有map方法,someName.map{name in "Hello,/(name)"}??"Hello world!" name是個可選類型,你不需要做可選綁定,如fil果name是nil,這個map方法返回的值也是nil
8. 函數的柯里化就是多參函數變成一個參數調用的返回值是函數,再調用的這個函數傳入第二個參數,這中間得到的函數叫外部這個函數的偏函數,函數柯里化只需要把函數的多個參數分別寫在不同的括號里就可以了
9. 在類命名訪問成員方法,得到的是一個可以函數柯里化的函數,第一個參數是類對應的對象,后面的參數就是這個函數應該有的參數
10. swift的枚舉可以有相關值(就是傳參),有相關值的兩個枚舉值不能用==比較,需要自己重載==運算符,而普通的枚舉是可以通過==比較的
11. 枚舉是可以有原始值的(默認值),可以是String,Character,Int,Float類型的,如果是Int后面的枚舉會遞增,通過rowValue可以獲取到原始值
12. 由于swift初始化方法的安全檢查太嚴格,在設置類似于數據源數組的時候可以用lazy 聲明,并用閉包返回值
13. Any表示任何類型除了方法類型,AnyObject表示任何class類型的實例
14. 在協議前加@objc表示協議可選,它只對class有效;在方法和屬性前加optional表示屬性和方法可選PRotocol<SomeProtocol,AnotherProtocol>就可以表示遵循這兩個協議的對象
新聞熱點
疑難解答