互動式教學
Swift 入門
動手做的入門教學,一次一題。 參考 Swift 官方文件與 CS61A 的節奏:先讀一個小觀念、看一段小程式,然後在執行之前,先想想它會做什麼。
依照 CS61A(2026 秋季)的課程順序,Swift 內容依據《The Swift Programming Language》(Swift 6.4)。
每一課怎麼進行
每一課就像一堂 CS61A 的課:簡短的講義與小程式,接著是問題。「Swift 會印出什麼?」要你預測輸出(程式會出錯就輸入 Error);程式重組題要你把打亂的程式行排回正確順序。每課最後都有一份實作,請在自己的電腦上撰寫並執行,準備好了再打開解答。
單元 1
用函式建立抽象
運算式、名稱與函式;流程控制;接收與傳回函式的函式;以及遞迴。對應 CS61A 的前四週。
- 01開始之前
從打下程式碼到看見輸出,中間發生了什麼? · EnglishCS61A · Welcome
可閱讀 - 02名稱與函式
替一段運算取名字,代表什麼? · EnglishCS61A · Functions
可閱讀 - 03流程控制
程式怎麼決定下一步要做什麼? · EnglishCS61A · Control
可閱讀 - 04高階函式
當函式本身也是值,會有什麼不同? · EnglishCS61A · Higher-Order Functions
可閱讀 - 05環境與閉包
一個名稱的值,是從哪裡來的? · EnglishCS61A · Environments
可閱讀 - 06函式抽象
一個函式應該承諾什麼、隱藏什麼? · EnglishCS61A · Abstraction · Function Examples
可閱讀 - 07遞迴
一個函式還沒寫完,怎麼能先相信自己? · EnglishCS61A · Recursion
可閱讀 - 08樹狀遞迴
一次呼叫變成兩次,會發生什麼事? · EnglishCS61A · Tree Recursion
可閱讀
單元 2
用資料建立抽象
序列、容器、Optional、自訂型別、遞迴資料、可變狀態、類別、協定、惰性序列與效率。對應 CS61A 第五到第九週。
- 09序列
對任何有順序的東西,可以做些什麼? · EnglishCS61A · Sequences
可閱讀 - 10字典、集合與元組
哪一種容器適合回答哪一種問題? · EnglishCS61A · Containers
可閱讀 - 11Optional
該怎麼表達「這裡可能什麼都沒有」? · EnglishCS61A · Containers (Swift-specific)
可閱讀 - 12結構與列舉
怎麼讓不合法的狀態根本寫不出來? · EnglishCS61A · Objects
可閱讀 - 13鏈結串列與樹
一個型別怎麼能包含自己? · EnglishCS61A · Linked Lists · Trees
可閱讀 - 14可變狀態與值語意
改了一個東西,什麼時候會連帶改到另一個? · EnglishCS61A · Mutation
可閱讀 - 15類別與繼承
什麼時候共用同一個物件才是你要的? · EnglishCS61A · Classes · Inheritance
可閱讀 - 16協定與泛型
怎麼替還不存在的型別寫程式? · EnglishCS61A · Object Examples (interfaces)
可閱讀 - 17疊代器與惰性序列
能不能處理一個永遠不會結束的序列? · EnglishCS61A · Lazy Evaluation · Generators
可閱讀 - 18效率與記憶化
為什麼同一個答案,有時要算那麼久? · EnglishCS61A · Efficiency
可閱讀
單元 3
與外界互動的程式
代數資料型別、直譯器、錯誤處理、並行、測試與套件。對應 CS61A 最後幾週,以 Swift 取代 Gleam 與 SQL。
- 19代數資料型別與模式比對
如果編譯器幫你檢查每一種情況呢?CS61A · Functional Programming · Algebraic Data Types · Immutable Data
規劃中 - 20寫一個直譯器
要讓一個語言跑起來,需要什麼?CS61A · Interpreters
規劃中 - 21錯誤處理
函式做不到該做的事時,應該怎麼辦?CS61A · Debugging
規劃中 - 22使用 async 與 await 的並行
怎麼等待,卻不讓一切停下來?CS61A · Browsers · Applications
規劃中 - 23測試
怎麼知道你的程式是對的?CS61A · Software Testing · Software Tracing
規劃中 - 24建立 Swift 套件
程式碼怎麼變成別人也能使用的東西?CS61A · Applications · Conclusion
規劃中