1. 介紹

Swift 語言全面剖析

2014年Swift誕生,在這之前,開發Mac或iOS App只能使用Objective-C。Objective-C是一個功能強大的語言,但就跟C一樣,初學者要上手需要一點時間,並且要讓App不會莫名其妙當掉也考驗著程式設計師的功力與經驗。面對App開發時各種不同功能的需求越來越大,也面對其他先進語言在語法結構上的比較競爭,最後催生出了Swift這個集合眾多語言優勢的嶄新語言。

Swift有著許多迥異於Objective-C的新功能,讓初學者的學習門檻不會一開始就拉得太高而降低了學習樂趣,並且在執行速度上比Objective-C快了2.6倍。

對於一位C或Objective-C的程式設計師而言,指標是熟悉到不能再熟悉的東西,而指標指到NULL導致程式當掉的經驗恐怕也快要跟吃的米一樣多,Swift閃開了指標也有效的處理NULL帶來的一連串問題,對初學者而言,這絕對是降低學習門檻與提升應用程式穩定度的重要關鍵。Swift是一個新語言,所以擺脫了Objective-C許多冗長的語法,改用一種簡潔優雅的語句來描述許多複雜的工作。雖然並不很建議在同一個專案中同時包含Objective-C的程式碼與Swift的程式碼,不過真的可以這樣做,我們可以在現有的Objective-C所開發的專案中加入Swift寫的程式並且呼叫Objective-C函數,雖然不能將兩個語言一起寫在同一個檔案裡面,但兩者可以共存在同一個專案中。2019年,Apple推出一個新的App開發框架,稱為SwiftUI,跟現有使用Storyboard的開發方式完全不同。如果SwiftUI推動順利,未來有一天Apple的各平台應用程式應該會透過SwiftUI框架全面統一,而且看這個框架的名字就知道:Swift Only。如果您準備要開始學習Swift了,那這個語言不會讓您失望,如果還在使用Objective-C開發專案,也建議真的可以開始進入Swift。

要執行Swift寫出來的程式,必須在電腦上安裝專屬的編譯器。Swift編譯器稱為Xcode,從App Store下載,當然得先有一台Mac電腦才行。雖然如今的Swift編譯環境可以在Linux上安裝,但畢竟學Swift的主要目的是用來開發App,因此還是在Mac環境下學習Swift語言比較適當。Xcode不只有編譯功能而已,同時也是是Apple官方提供的一個功能極其完整的整合開發環境(Integrated Development Environment),可用來開發Apple各平台應用程式,例如iOS、watchOS、tvOS與macOS。Xcode也包含了各種除錯工具與模擬器,當程式出現錯誤時,這些除錯工具可以快速幫我們找到問題。

Xcode也提供了一個非常適合學習Swift語言的環境,稱為Playground。Playground沒有複雜的操作介面,專案建立起來後畫面就像一個簡單的文字編輯器,完全不需要花時間去理解介面功能,只要專注在程式碼上面就可以了。Playground看似陽春,但卻提供了一個Swift初學者需要的所有功能,甚至是有經驗的開發者想要測試一些程式碼,都可以在Playground中進行。下圖就是Playground專案建立後的畫面,在每行程式碼左邊,滑鼠游標移過去後會出現一個右箭頭的「執行」符號,點選這個符號程式碼就會從第一行執行到這個位置,過程中變數或常數的內容就會出現在畫面右邊,使用print()函數印出的訊息會出現在畫面的下方。暫時不需要執行的程式碼就先註解起來,或搬到「執行」符號後面去。剩下要注意的就是:寫程式。

要建立 Playground 專案只要執行 Xcode 之後,在選單 File 中選 New 後再選 Playground 即可開啟 Playground 的範本對話框,然後選擇 iOS 版的 Blank 範本就可以了。

除了Playground專案之外,建立macOS的Command Line Tool(簡稱為CLT)專案也是學習Swift語言的另外一個好地方。以CLT建立的專案編譯後其實就是終端機下的應用程式,是一個真正可以執行的執行檔,不像在Playground中寫的程式終究只能在Playground中執行。除此之外,CLT的開發環境可以設定中斷點,有些錯誤透過中斷點加上單步追蹤功能會比較容易找到錯誤,而中斷點與單步追蹤在Playground是沒有的。在學習Swift語言的過程中,如果遇到跟檔案存取有關的程式或是需要從標準輸入取得使用者在鍵盤上輸入的資料,應該要建立CLT專案。

在Xcode中,有幾個重要的操作技巧要知道。

  • 註解:將文字游標移到需要註解的程式碼,然後按「Command + /」,該行就會變成註解。如果要移除註解,再按一次「Command + /」即可。如果要多行註解,先用滑鼠將要註解的那幾行選起來後按「Command + /」,移除也是一樣。
  • 查看原始定義:將滑鼠游標移到想要查詢的函數或資料型態上,按「Command + Mouse-Click」後選Jump to Definition就可以察看原始定義

特色

本系列內容著重於Swift語法特性與結構,並不涉及跟App開發有關的技術,全系列文章以各式各樣精彩的例子,告訴您這個函數或這個語句的用途。本文章涵蓋大範圍的Swift語句,並且包含標準函數庫中幾個超級重要型態的介紹,例如String、Array、Dictionary…等。對於想要瞭解Swift語言的人,這是一份重要的參考文件。若您學了Swift並且想要開始一展身手準備來開發App的讀者,可以參考朱克剛的「iOS 程式設計實戰」一書,這本書與這您在這看到的Swift語言文章將帶給您如虎添翼般的威力。

發表迴響