preface - epaper.gotop.com.twepaper.gotop.com.tw/pdfsample/acl043300.pdf ·...

14
序言 筆者看過與研究過許多的程式語言,您可以講出來的,大概都有些許的接 觸。最近因為撰寫 iOS app,所以有大半的時間都在使用 Objective-C。要 學會 Objective-C 可能有一些門檻,若您有 C C++ 語言基礎者,可能會比 較容易跨越。 其實 Objective-C 現已容易多了,以前在參考計算 (reference count) 不易掌 控,可說是程式設計師的夢魘,現已改為自動參考計數 (automatic reference count) ,可以說是程式設計師的福音,比較不會動不動因為記憶體不足而 當機。 雖然如此,Apple 為了因應新的 XCode 6 環境,於 2014 6 月也公佈開發 iOS OS XApp 新的程式語言,名為 Swift 。它是建立於最好的 C Objective-C 之上,並採納安全的程式設計模式以及加入最新的特性,使得 Swift 程式設計更有彈性和有趣。尤其在記憶體的管理上使用自動化參考計 數。同時也和 Swift 的意思相同,它的編譯與執行有如燕子般的輕盈快速。 本書參考 Apple 官方公佈的 Swift 程式語言,經過整理後以淺顯易懂的闡述, 配合豐富的範例程式、圖表,以及章末的自我練習題,讓您可以很快能夠撰 Swift 程式。本書的架構共分 18 章,以撰寫一簡單的範例程式開始,接著 是變數、常數與資料型態、運算子、迴圈敘述、選擇敘述、聚集型態、函 式、閉包,類別與結構、屬性與方法、繼承、初始化與收尾、自動參考計 數、選項串連、型態轉換和延展、協定、泛型以及運算子。 如同書名般,看完這 18 章的精彩內文,您就可以進入撰寫 iOS OS X App 的行列,為您的人生注入新的契機。本書的封面取用燕子的圖像,以官方燕 子的圖片為底,搭配真實燕子飛翔的圖片( 由田念魯先生提供) ,帶您翱翔天 空,美夢成真。 2014/09/31 PREFACE

Upload: others

Post on 30-Oct-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

序言

筆者看過與研究過許多的程式語言,您可以講出來的,大概都有些許的接

觸。最近因為撰寫 iOS 的 app,所以有大半的時間都在使用 Objective-C。要學會 Objective-C 可能有一些門檻,若您有 C 與 C++ 語言基礎者,可能會比較容易跨越。

其實 Objective-C 現已容易多了,以前在參考計算 (reference count) 不易掌控,可說是程式設計師的夢魘,現已改為自動參考計數 (automatic reference count),可以說是程式設計師的福音,比較不會動不動因為記憶體不足而 當機。

雖然如此,Apple 為了因應新的 XCode 6 環境,於 2014 年 6 月也公佈開發iOS 與 OS XApp 新的程式語言,名為 Swift。它是建立於最好的 C 與Objective-C 之上,並採納安全的程式設計模式以及加入最新的特性,使得Swift 程式設計更有彈性和有趣。尤其在記憶體的管理上使用自動化參考計數。同時也和 Swift的意思相同,它的編譯與執行有如燕子般的輕盈快速。

本書參考 Apple官方公佈的 Swift程式語言,經過整理後以淺顯易懂的闡述,配合豐富的範例程式、圖表,以及章末的自我練習題,讓您可以很快能夠撰

寫 Swift 程式。本書的架構共分 18 章,以撰寫一簡單的範例程式開始,接著是變數、常數與資料型態、運算子、迴圈敘述、選擇敘述、聚集型態、函

式、閉包,類別與結構、屬性與方法、繼承、初始化與收尾、自動參考計

數、選項串連、型態轉換和延展、協定、泛型以及運算子。

如同書名般,看完這 18章的精彩內文,您就可以進入撰寫 iOS與 OS X App的行列,為您的人生注入新的契機。本書的封面取用燕子的圖像,以官方燕

子的圖片為底,搭配真實燕子飛翔的圖片(由田念魯先生提供),帶您翱翔天空,美夢成真。

2014/09/31

PREFACE

Page 2: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

從一簡單的範例談起

1.1 撰寫您的第一個程式 假設我們想撰寫一簡單的 Swift程式,輸出結果如下:

Learning Swift now!

安裝完 Xcode 後,可在應用程式中找到 Xcode 圖示(icon),如下所示。建議你將 Xcode圖示拖曳到 Dock上,方便以後開啟使用。

開啟後可以看見 Xcode 的歡迎畫面,如圖 1-1 所示。此處可以選擇開啟新的專案(project),或開啟之前撰寫的專案。

1

CHAPTER

Page 3: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-2

學會 Swift程式設計的 18堂課

圖 1-1 Xcode 歡迎畫面

接著選擇「Create a new Xcode project」,以便開啟一個新的專案。當

然,也可以藉由系統 Xcode的選單,選取「File」「New」「Project…」開啟新的專案,如圖 1-2所示。

圖 1-2 File 選單下的選項

專案開啟後,將出現提供我們選擇欲開啟的專案類型,如圖 1-3所示。

Page 4: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-3

Chapter 1 從一簡單的範例談起

圖 1-3 Mac OS X 專案類型

Mac OS X 的專案有許多類型可供選擇,由於此處僅示範撰寫一個輸出Learning Swift now!這一字串的程式,因此,在左欄中選擇 Mac OS X 底下

Application,並在右欄上選擇「Command LineTool」(命令列工具)。因為此專案僅介紹 Swift,所以使用 Command Line Tool。若要撰寫有關 iPhone程式的範例,此時在新增專案時需使用 iOS底下 Application,如圖 1-4。

圖 1-4 iOS 專案類型

Page 5: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-4

學會 Swift程式設計的 18堂課

當我們在圖 1-3 選擇「Command LineTool」,按下 Next 按鈕後,畫面將如圖 1-5所示,請在 Project Name輸入 myFirst,也在 Organization Name 和Organization Identifier 輸入一個名稱,這些都可以自行命名,以及 Language的選項,請選取「Swift」。

圖 1-5 專案名稱命名及編譯語言選擇

Xcode 6 目前仍提供 Objective-C 語言的編譯,但由於目前專案要介紹Swift,因此 Language的項目請選擇「Swift」。

按下 Next 按鈕後,請選擇專案欲儲存的位置,位置可以任你選擇,此範例儲存在已經事先在桌面建立好的「Swift 範例程式」資料夾下,最後按下 Create按鈕,如圖 1-6所示。

Page 6: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-5

Chapter 1 從一簡單的範例談起

圖 1-6 專案儲存位置

完成後,將會出現如圖 1-7 的編輯與執行的畫面,請點選 myFirst 下的main.swift。

圖 1-7 編輯與執行的畫面

Page 7: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-6

學會 Swift程式設計的 18堂課

點選檔案 main.swift,可以看見 Xcode 自動幫我們產生的程式樣板。其中.swift為 Swift所使用的副檔名。

接著做一點小小的修改,將下一行敘述

println(”Hello, world!”)

改為

println(”Learning Swift now!”)

如圖 1-8所示:

圖 1-8 修改後的程式

println 函式是以雙引號括起來的字串參數。字串中出現什麼就印什麼。詳細說明請參閱第二章變數、常數以及資料型態。

值得一提的是,在 Swift 語言中每一行程式碼的結尾,不需要以分號「;」作為結束記號。

修改完後,按下圖 1-7左上角的「」符號,Xcode會開始編譯與執行原始程式碼。若無錯誤,輸出結果如圖 1-9所示:

Page 8: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-7

Chapter 1 從一簡單的範例談起

圖 1-9 輸出結果的畫面

在圖 1-9下方,我們所看到的輸出結果是由 println函式所產生,如下所示:

Learning Swift now!

1.2 程式解析 程式的第一行是

import Foundation

此敘述的功能是載入所有對 Swift 有效的 Foundation API,包括 NSDate、NSURL、NSMutableData,以及這些類別的所有方法、屬性以及類目。

在圖 1-8 所示的程式碼,皆為系統自動產生,也就是上述所列的敘述您可以不必加以理會,只要知道其功能即可,我們只修改了 println 函式這一行敘述而已。

在 println 函式的參數是一字串,置於此內的文字將被印出,除非有特殊的告知,這將在第二章再詳述之。也可以使用 print函式,它與 println函式之差異是,print 函式印完資料後不會換行,而 println 函式則印完資料後,將跳到下一行。

Page 9: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-8

學會 Swift程式設計的 18堂課

Swift 與其它語言,如 C 或 Objective C 不同的是,在每一行敘述後面不需要加分號,來表示此敘述已結束。不過你在每一敘述加上分號也是可以的。一

般而言,我們是不會加的。

本章您只要知道如何建立一專案,從而修改程式以符合您的需求,然後如何

編譯與執行就可以了。還有程式中所使用英文字母,大小寫是不同的。

1.3 Playground介紹 Playground 是 Xcode6 中自有的 Swift 程式碼開發環境。以前在 Xcode5 中編寫腳本程式碼的支援並不是很好,但在 Playground 中編寫 Swift 程式碼有了更好的支援。

使用 Playground編寫 Swift程式碼,不需要編譯或執行一個要編譯的 Swift程式,你可以快速地看到程式碼執行的過程中所執行的結果。

首先打開 Xcode 6,直接點擊 “Get started with a Playground”,就可以直接開啟一個 Playground環境。如圖 1-10所示:

圖 1-10 選取畫面左邊的第一項

Page 10: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-9

Chapter 1 從一簡單的範例談起

接著設定 Playground的名稱和適用平台,在此是命名為 MyPlayground,並使用 iOS的 Platform,然後按下 Next。如圖 1-11所示:

圖 1-11 設定 Playground 的名稱和適用平台

接下來選擇檔案要存放的位置,並按下 Create。如圖 1-12所示:

圖 1-12 設定 Playground 的存檔位置

Page 11: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-10

學會 Swift程式設計的 18堂課

圖 1-13 Playground 的自動生成的範例程式碼

完成後如圖 1-13 所示,我們就可以開始使用 Playground 的環境來編寫 Swift程式碼了。

接著以自動生成的範例程式碼,來開始介紹 Playground環境的內容。

首先看到右邊即時顯示的部分(如圖 1-14)

圖 1-14 Playground 的右邊側欄

上面有兩個按鈕,由左到右分別是 Quick Look,Value History,先來介紹Value History的部分。按下 Value History之後會出現圖 1-15的右方區塊。

圖 1-15 開啟 Value History 後的結果

此時將會在圖中看到 Playground 分成三個部分,由左至右為編輯區,執行結果(自動編譯),最右邊則是 Log區。

接下來,我們使用另一段程式碼來介紹不同區域的用途。

Page 12: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-11

Chapter 1 從一簡單的範例談起

圖 1-16 計算 1 加到 100 總和的程式碼

在圖 1-16 右方的執行結果中,可以看到迴圈跑了 100 次,以及 1 加到 100的總和是 5050。

接著點選圖 1-16右方區塊的 Value History,將會看到 log區,如圖 1-17。

圖 1-17 開啟 log 區的圖表

如圖 1-17,在 log區迴圈的部分,我們可以看到 total的 100次變化,針對迴圈每一次的運行都會留下一個紀錄,而這些變化會形成一個圖表,方便我們

去看程式運行中的變化過程。

再舉另一段程式碼,體會一下 Playground的強大。

Page 13: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-12

學會 Swift程式設計的 18堂課

圖 1-18 sin 函式程式碼

在圖 1-18中可以清楚看到,這是一段 sin函式曲線的程式碼。

圖 1-19 Sin 函數曲線圖表

而在圖 1-19中,我們可以點擊不同位置,得知當時該變數的具體數值。

最後來介紹 Quick Look 的用途。假如所撰寫的 Swift 語言是 UI 的相關內容,透過 Quick Look 的按鈕,可以直接預覽畫面的布局狀況,如下圖 1-20所示:

圖 1-20 使用 UI的範例程式碼

經由以上的介紹,相信您已經充分體會到 Playground 強大以及有趣的地方了吧!

Page 14: PREFACE - epaper.gotop.com.twepaper.gotop.com.tw/PDFSample/ACL043300.pdf · 學會Swift程式設計的18堂課 圖1-13 Playground的自動生成的範例程式碼 完成後如圖1-13

1-13

Chapter 1 從一簡單的範例談起

自我練習題 1. 請建立一專案名稱 mySecond,將系統產生的程式加以修改,以輸出您的姓名、出生年月日、就讀的學校與科系、手機號碼、地址等等資訊。

順便熟悉從撰寫一程式到編譯與執行的步驟。 2. 將 1-3節所介紹的 sin函式曲線程式碼改為 cos函式曲線程式碼。看看它在 Playground上的變化為何。順便熟悉在 Playground上的環境。