想了一想,發現還是要對Swift做一些基本介紹,不然很多只有從我這邊接觸到Swift的讀者,可能會沒有辦法入門。
首先我想說一個我的觀念。
我覺得會寫程式真的沒什麼了不起的。
但是不只是寫程式沒什麼了不起,會畫畫,彈吉他,跳舞,都沒什麼了不起。
為什麼我這麼說,不是想要批評誰,而是
我相信任何的技能,任何的觀念,只要站在正確的位子上,都能夠理解。
學程式沒什麼了不起,如果你花了時間知道電腦怎麼運作的,知道要跟機器溝通有哪些步驟,知道寫的這些像英文的語言在妳寫完之後是怎麼傳達給電腦去執行的。如此的話你在學程式的時候,就會知道,為什麼有些地方會需要做這個事情,有些Design Pattern需要遵守。你的腦袋就可以很快的連結起來。
當有人告訴你一件事情的脈絡的時候,可能你本來無法理解別人為什麼而做出的決定,也變成理所當然。
只要站在正確的位子上,答案自己會跑出來,我是這樣相信的。
回到Swift。
今天由於在找一些線上翻譯相關的工具,找到了Amara這個可以讓你在線上編輯字幕翻譯的網站。剛好拿了Swift的介紹的影片來嘗試翻譯。
可以感受到觀眾們都是異常的興奮,因為他們知道這是"大件事"啊!
為什麼Swift會讓他們興奮,是因為它可以更簡潔的表達工程師想表達的意思,甚至執行的速度可以更快。
但是這些對還不認識Swift或者iOS開發的人,可能還不重要,我們現在還不是站在那個位置。
那在我們現在的位子會需要知道哪些關於Swift的事呢?
好問題...
在說這個問題之前,我又想撈叨一下。
曾經有個朋友問我,到底為什麼要有這麼多程式語言,他們的差異是什麼?
我這邊沒有想回答這個問題,
我想說的是,他們共同的地方是什麼?
是不是有辦法可以知道一些基本的概念,其實就可以運用在各種程式語言上。
如同這篇文章提過的,一切都是關於溝通,關於訊息的傳遞。
啊,有時候,想傳遞的東西想要先保留在什麼地方。
所以需要一個空間,或是一個箱子,要把它記下來,
而且還要再我想用的時候,隨時可以找到。
所以這個時候,嗯.... 需要一個有名字的箱子來記錄我像暫時放著的訊息,
在Swift當中,有兩種:
不會變的常數用let
宣告,以及會變的變數用var
宣告,
所以當有一個東西,不會變,例如圓周率π 約等於3.14159265359
我就可以說
let 圓周率 = 3.14159265359
這樣我事後如果想用,就只要輸入圓周率
,而不用輸入3.14169265359,還有可能打錯像是我把小數點第四位打成6但應該是5一樣。
而變數,例如年紀會改變:
var myAge = 27
所以當一年過去了,我再來編成,就可以寫:
myAge = 28
但這樣很笨,如果我要手動改年紀,每次都要寫不一樣數字。而事實讓我每年生日的時候,都會長一歲,
在這種時候,我們會希望可以用自己的思考方式去幫程式定義,例如我想讓程式知道,我要長一歲
這個動作
我就可以宣告一個function利用func
func 長一歲() {
// 註:長大一歲
myAge = myAge + 1
}
所以我每一次過生日,就可以執行這個動作,不管我幾歲,我都會長一歲。
阿靠,但是我什麼時候要執行這個動作啊,
M....剛剛提到每次生日的時候,所以我每天都確認一次,如果今天是我的生日,我就要長一歲,
那...要怎麼樣讓電腦去這樣做呢?要讓電腦去判斷
什麼時候該做什麼。
所以用if
:
if 今天 == 我的生日 {
長一歲()
}
在這邊你可以注意到,我在寫程式碼的時候,不用像其他有些年紀的程式碼,需要加上分號;
來斷句,但是你也可以加,不犯規。
而這邊可以看到,在我執行那個動作的後面加了()
,這個括弧裡面,是代表著要給這個動作的一些資訊,
例如宣告一個染頭髮的動作,我就必須要提供我要染成什麼顏色:
func 把頭髮染成(_ 顏色: 顏色類型) {
我的頭髮顏色 = 顏色
}
執行起來就變成:
把頭髮染成(綠色)
這樣他顏色
的變數就是綠色,我都頭髮就變綠了....😢
好的,所以剛剛說了宣告變數及常數,還有func
以及if
的概念,
但是由於我想睡覺了,所以決定明天再說說class
、struct
還有enum
,最好在提到optional的事啦:)
晚安啦,各位!
//補充1:
Getting Started with Swift - WWDC 2016 - 非常簡潔的資源,推薦。