天天看點

Swift 基礎之常量和變量

常量和變量把一個名字(比如 maximumNumberOfLoginAttempts 或者 welcomeMessage)和一個指定類型的值(比如數字 10 或者字元串"Hello")關聯起來。常量的值一旦設定就不能改變,而變量的值可以随意更改。

一:聲明常量和變量

常量和變量必須在使用前聲明,用 let 來聲明常量,用 var 來聲明變量。下面的例子展示了如何用常量和變量來記錄使用者嘗試登入的次數:

let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0
           

這兩行代碼可以被了解為:

“聲明一個名字是 maximumNumberOfLoginAttempts 的新常量,并給它一個值 10。然後, 聲明一個名字是 currentLoginAttempt 的變量并将它的值初始化為 0.”

在這個例子中,允許的最大嘗試登入次數被聲明為一個常量,因為這個值不會改變。目前嘗試登入次數被聲明為一個變量,因為每次嘗試登入失敗的時候都需要增加這個值。

你可以在一行中聲明多個常量或者多個變量,用逗号隔開:

var x = 0.0, y = 0.0, z = 0.0
           
注意:如果你的代碼中有不需要改變的值,請使用 let 關鍵字将它聲明為常量。隻将需要 改變的值聲明為變量。

二:類型标注

當你聲明常量或者變量的時候可以加上類型标注(type annotation),說明常量或者變量中要存儲的值的類型。如果要添加類型标注,需要在常量或者變量名後面加上一個冒号和空格,然後加上類型名稱。

這個例子給 welcomeMessage 變量添加了類型标注,表示這個變量可以存儲 String 類型的值:

var welcomeMessage: String
           

聲明中的冒号代表着“是…類型”,是以這行代碼可以被了解為:

“聲明一個類型為 String,名字為 welcomeMessage 的變量。”

“類型為 String”的意思是“可以存儲任意 String 類型的值。”

welcomeMessage 變量現在可以被設定成任意字元串:

welcomeMessage = "Hello"
           
注意:一般來說你很少需要寫類型标注。如果你在聲明常量或者變量的時候賦了一個初始 值,Swift 可以推斷出這個常量或者變量的類型。在上面的例子中,沒有給 welcomeMessage 賦初始值,是以變量 welcomeMessage 的類型是通過一 個類型标注指定的,而不是通過初始值推斷的。

三:常量和變量的命名

你可以用任何你喜歡的字元作為常量和變量名,包括 Unicode 字元:

let π = 3.14159
let 你好 = "你好世界"
let ???????? = "dogcow"
           

常量與變量名不能包含數學符号,箭頭,保留的(或者非法的)Unicode 碼位,連線與制表符。也不能以數字開頭,但是可以在常量與變量名的其他地方包含數字。

一旦你将常量或者變量聲明為确定的類型,你就不能使用相同的名字再次進行聲明,或者改變其存儲的值的類型。同時,你也不能将常量與變量進行互轉。

注意:如果你需要使用與 Swift 保留關鍵字相同的名稱作為常量或者變量名,你可以使用反引号(`)将關鍵字包圍的方式将其作為名字使用。無論如何,你應當避免使用關鍵字作 為常量或變量名,除非你别無選擇。

你可以更改現有的變量值為其他同類型的值,在下面的例子中,friendlyWelcome 的值從 "Hello!“改為了"Bonjour!”:

var friendlyWelcome = "Hello!"
friendlyWelcome = "Bonjour!"
// friendlyWelcome 現在是 "Bonjour!"
           

與變量不同,常量的值一旦被确定就不能更改了。嘗試這樣做會導緻編譯時報錯:

let languageName = "Swift"
languageName = "Swift++" // Cannot assign to value: 'languageName' is a 'let' constant
// 這會報編譯時錯誤 - languageName 不可改變
           

四:輸出常量和變量

你可以用 print 函數來輸出目前常量或變量的值:

print(friendlyWelcome)
// 輸出 "Bonjour!"
           

print 函數輸出傳入的 String 值:

print("This is a string")
// 輸出 "This is a string"
           

Swift 用字元串插值(string interpolation)的方式把常量名或者變量名當做占位符加入到長字元串中,Swift 會用目前常量或變量的值替換這些占位符。将常量或變量名放入圓括 号中,并在開括号前使用反斜杠将其轉義:

print("The current value of friendlyWelcome is \(friendlyWelcome)")
// 輸出 "The current value of friendlyWelcome is Bonjour!
           
注意:字元串插值所有可用的選項

歡迎關注公衆号 [Swift 社群]:

Swift 基礎之常量和變量