原创 Swift與泛型編程第四彈:類型擦除 一、引言 二、面向對象的劣勢 三、面向協議編程的解決之道 四、泛型編程登場 五、具有關聯類型的協議 六、類型擦除 七、總結 八、致謝

一、引言         類型擦除是一個比較難以理解的概念(如果只是粗淺的理解,那麼也不算太難)。如果要深入理解,涉及到:OOP、POP、逆變、協變、泛型編程、編譯器等概念。雖然有不少文章都在講類型擦除,但是一般存在有以下的一些問題: 示

原创 Swift與泛型編程第四彈:基礎語法之不夠明類型 1. 不透明類型概述 2. 不透明類型解決的問題 3. 返回不透明類型 4. 不透明類型和協議類型的區別

注意 本文是基於官方的《Swift編程語言》的協議章節,在作者重溫相關內容之後,把一些重要內容複製過來的,所以原創程度不高。從第四彈開始,後面章節的原創程度會逐步提高。 1. 不透明類型概述         具有不透明返回類型的函數或方

原创 Swift與泛型編程第一彈:基礎語法之協議

        泛型編程是一種很古老的技術,早在上世紀90年代就有大規模的應用,特別是在C++語言中得到了廣泛的應用。C++的STL從大的方面來看包括:數據結構、算法、迭代器,這些內容都是基於泛型的,可以說泛型基礎支撐了STL大廈。如果諸位

原创 Swift高階函數解析 一、鍥子 二、高階函數解析 三、以reduce實現其他高階函數 四、reduce的妙用 五、lazy 六、轉變思想

一、鍥子 最近在學習Swift過程中發現,Swift有不少高階函數,這些函數爲Swift支持函數式編程範式提供了強有力的支持。這些函數主要包括:map、filter、flatMap、compactMap、reduce等。 本文對這些函數進行

原创 《Pro Swift》Chapter 7 範式 一、面向對象編程 二、面向協議編程 三、MVC 四、MVVM 五、命令行Swift

        《Pro Swift》適合對編程、Swift瞭解很少的程序猿。對有經驗的程序猿來說價值不大,如果時間不多的話,可以不讀。此書名字中雖然有Pro,但略有些名不符實。         在簡書上看到一位作者已經翻譯過了前6章,但是

原创 Chapter 4. Object Types(第二部分) 十三、泛型 十四、擴展 十五、傘形類型 十六、數組 十七、字典

十三、泛型 爲什麼需要泛型 許多程序設計語言都是強類型的,而Swift對類型的檢查更加嚴格 由此導致許多類型定義、方法都是基於某種類型的 這就導致許多具有不同類型的方法,只是因爲類型不同而要重複寫好多遍 針對此困境,我們寫一個通用的邏

原创 Swift高階函數解析 一、鍥子 二、高階函數解析 三、以reduce實現其他高階函數 四、reduce的妙用 五、轉變思想

一、鍥子 最近在學習Swift過程中發現,Swift有不少高階函數,這些函數爲Swift支持函數式編程範式提供了強有力的支持。這些函數主要包括:map、filter、flatMap、compactMap、reduce等。 本文對這些函數進行

原创 Chapter 1. The Architecture of Swift 一、Swift總體結構 二、對象類型 三、變量 四、方法 五、Swift文件結構 六、作用域、生命期 七、模塊

一、Swift總體結構 關於分號與換行符 在Swift中一條語句不需要以分號結束(加不加分號都可),以換行符標識一條語句的結束 但是如果一行包含多個語句,則語句之間需要以分號分割(並不是絕對的,例如以下語句就沒必要 func sum(

原创 令人迷惑的Swift行爲 一、引言 二、廢多看碼 三、追根溯源 3.3 未完待續

一、引言         所有的程序員都知道,多線程可能導致程序發生邏輯錯誤。此類問題的一般原因是,對相同內存的訪問導致髒數據。現在,語言、工具、庫等的不斷改善,大幅降低多線程導致的問題的可能性。如,在OC當中,GCD的出現,大幅降低了多線

原创 我就站在你面前,看我幾分像從前。 一、鍥子 二、如何看待Swift 三、廢多看碼 四、總結

一、鍥子         最近,抖音流行一句話“我就站在你面前,你看我幾分像從前”;意思說我再也不是卑微的我了,你應該換個角度仔細審視我。這給人以蘇秦攜六國相印榮歸故里的感覺。         筆者以前是做C++開發的,對C++語言比較熟悉

原创 Swift精品網文集中營

《The Swift Programming Language》 Swift 中的指針使用 Swift 中枚舉高級用法及實踐 類型擦除

原创 Chapter 5. Flow Control and More 一、控制流 二、隱私(訪問控制) 三、運算符 四、內存管理 五、swift語言的雜項

一、控制流 概述 與OC不同,Swift中流程控制語句的條件判斷部分不需要使用括號包括 流程控制語句中的花括號不可以省略 分支 if分支 if condition { statements } if conditi

原创 Chapter 4. Object Types(第二部分) 十三、泛型 十四、擴展 十五、傘形類型

十三、泛型 爲什麼需要泛型 許多程序設計語言都是強類型的,而Swift對類型的檢查更加嚴格 由此導致許多類型以及其所屬的方法都是基於某種類型的 這就導致許多具有不同類型的方法,只是因爲類型不同而要重複寫好多遍 針對此困境,我們寫一個通

原创 Chapter 3. Variables and Simple Types 一、作用域與生命期 二、設置觀察者 三、惰性初始化 四、內置簡單類型

一、作用域與生命期 變量從作用域與生命期角度來看有三種類型 全局變量 在Swift文件的最頂層聲明的變量就是全局變量 其生存期是與應用進程相同 默認全局變量可以被一個模塊內的所有文件看到 屬性 聲明在對象(類、結構、枚舉)的頂

原创 Chapter 1. The Architecture of Swift 一、Swift總體機構 二、對象類型 三、變量 四、方法 五、Swift文件結構 六、作用域、生命期 七、模塊

一、Swift總體機構 關於分號與換行符 在Swift中一條語句不需要以分號結束(加不加分號都可),以換行符標識一條語句的結束 但是如果一行包含多個語句,則語句之間需要以分號分割 一條語句可以分割爲多行,以避免過長的行 print(