昨天我們認識了 Swift,也跑出人生第一個 Hello, World
今天,我們將學會 Swift 的基礎語法,這些是寫 App 一定會用到的東西。掌握它們,我們就可以跟程式「對話」了!
關鍵字 | 可否修改值 | 用途 |
---|---|---|
var |
可以修改 | 用於需要在程式中變動的資料 |
let |
不可修改 | 用於常數,值一旦設定就不能更改 |
var age = 25
age = 26 // 可以修改
let birthYear = 1998
// birthYear = 1999 // 會導致編譯錯誤,let 宣告的常數無法更改
型別 | 說明 | 範例 |
---|---|---|
Int |
整數 | let year: Int = 2025 |
String |
文字字串 | let greeting: String = "Hello, iOS!" |
Double |
浮點數(小數) | let pi: Double = 3.14 |
Bool |
布林值(真或假) | let isSwiftFun: Bool = true |
型別就是告訴電腦:「這東西是什麼類型?」
像是你說「我有 3 顆蘋果」這裡的「3」是整數,
「我的名字是 Melodia」裡的「Melodia」是文字。
Swift 要知道你手上的是什麼東西,才能幫你做正確的運算和操作。
在你宣告變數或常數的時候,其實可以主動標明它的型別,這種做法叫做「型別標註(Type Annotation)」。
語法很簡單,只要在變數名稱後面加上冒號「:」,然後寫上型別名稱:
// 宣告一個變數,指定為整數,還沒給初始值
var score: Int
// 宣告一個常數,明確指定這是字串
let name: String = "Melodia"
這麼做的好處是能幫助程式更清楚知道你要存的是什麼類型的資料。
但說實話,在實務上我們不太需要每次都寫出型別標註,
因為 Swift 很聰明,會根據你給的值自動判斷型別(這稱作型為別推論)。
例如,下面這兩段程式碼其實效果一樣:
// 加上型別標註
let city: String = "Taipei"
// 靠 Swift 自己判斷(型別推論)
let city = "Taipei"
兩種方式都可以,你可以選擇你覺得清楚的寫法。
不過如果沒給初始值,就一定要加上型別,這樣程式才知道要預留什麼型別的空間給變數哦!
整數就是沒有小數點的數字,可以是正的、負的,像是:
var temperature: Int = -5
var apples: Int = 3
在 Swift 中,有兩種主要的浮點數型別:Float 和 Double。
型別 | 名稱 | 位元數 | 精確度 | 說明 |
---|---|---|---|---|
Float |
單精度浮點數 | 32-bit | 約 6 位小數 | 佔用記憶體較少,但精確度較低。 |
Double |
雙精度浮點數 | 64-bit | 約 15 位小數 | 佔用記憶體較多,但精確度高得多。 |
這個問題的答案很簡單:永遠優先使用 Double。
因為現代的 iPhone 和 Mac 處理器在計算 Double 時速度非常快,而且更高的精確度可以避免很多潛在的錯誤。因此,Swift 非常聰明地將 Double 設定為預設的浮點數型別。
當你寫下一個帶有小數點的數字時,Swift 會自動將它推論為 Double。
// Swift 會自動將 pi 推論為 Double
let pi = 3.14159
// 在特別需要節省記憶體或效能時手動宣告為 Float
let gravity: Float = 9.8
給初學者的建議: 在學習初期,你可以先忽略 Float,在所有需要小數的場合都放心使用 Double 就可以了。
布林值只有兩種:真(true)或假(false),就跟開關一樣。
var isLightOn: Bool = true
var isRaining: Bool = false
在程式裡經常用來判斷、決定要不要做什麼事。
文字就是一串字,比如你的名字、訊息等,它的寫法是放在雙引號裡:
var name: String = "Melodia"
var greeting = "Hello, World!"
也可以把其他變數放進文字裡,這裡我們使用 字串插值 (String Interpolation)
它的語法非常簡單:只要把你想嵌入的內容,用 \()
包起來即可:
var age = 25
let message = "I am \(age) years old."
要特別注意的是,如果沒有特別做型別標註的話,那 Swift 會將類似於 c
的字元視為 String 型別。
除非你特別加上型別標註才會是 Character:
let str1 = "Swift" // 是 String
let str2 = "A" // 雖然只有一個字,但還是 String
let letter: Character = "c" // 加上型別標註,才是 Character
今天我們學會了 Swift 中的基礎語法,包括常見的資料型別(整數、浮點數、布林、字串)、變數與常數的宣告方式、型別標註與型別推論,還有怎麼把變數嵌入字串中進行輸出。這些是所有 Swift 程式的骨幹,有點像是「說話的語法」,掌握它們,你已經開始會「跟電腦對話」啦!
你有沒有想過,如果一個變數有可能沒有值,那該怎麼處理?
直接使用會當機?不會出錯?還是…Swift 有辦法幫你守住這道防線?
明天,我們將探索 Swift 非常特別也非常重要的語法──「可選型別(Optional)」,學會如何正確處理資料可能為 nil 的情況,還會帶你認識「強制解析」與「隱式解析」這些關鍵技巧,讓你的程式更安全、更聰明!
敬請期待《Day 3|Swift 可選型別全攻略:從安全解包到隱式解析,告別程式崩潰恐懼!》