1. 程式人生 > >IOS 之 Swift教程(一) -入門語法(常量、變數)

IOS 之 Swift教程(一) -入門語法(常量、變數)

Swift常量、變數的定義和使用

眾所周知大家在使用其他語言時也有常量和變數的區分,因此swift也不列外.
常量和變數把一個名字(比如maxNumber or minNumber)和一個指定型別的值(比如整形10,浮點型10.0,字串”hello World”,”Hello, I love cry”)等關聯起來。常量的值一旦設定就不能在改變和修改,而變數的值可以隨意修改(比如你銀行的賬戶中的money,你存就增加,你取就減少)

常量和變數的宣告

常量和變數在使用前必須宣告,用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 你好 = "你好世界"

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

一旦你將常量或者變數宣告為確定的型別,你就不能使用相同的名字再次進行宣告,或者改變其儲存的值的型別。同時,你也不能將常量與變數進行互轉。
注意:如果你需要使用與Swift保留關鍵字相同的名稱作為常量或者變數名,你可以使用反引號(`)將關鍵字包圍的方式將其作為名字使用。無論如何,你應當避免使用關鍵字作為常量或變數名,除非你別無選擇。
你可以更改現有的變數值為其他同類型的值,在下面的例子中,friendlyWelcome的值從”Hello!”改為了”Bonjour!”:

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

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

let languageName = "Swift"
languageName = "Swift++"
// 這會報編譯時錯誤 - languageName 不可改變 

輸出常量和變數

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

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

print是一個用來輸出的全域性函式,輸出的內容會在最後換行。如果你用 Xcode,print將會輸出內容到“console”面板上。(另一種函式叫print,唯一區別是在輸出內容最後不會換行。)

//print函式輸出傳入的String值:
print("This is a string") // 輸出 "This is a string" 

與 Cocoa 裡的NSLog函式類似的是,print函式可以輸出更復雜的資訊。這些資訊可以包含當前常量和變數的值。

Swift 用字串插值(string interpolation)的方式把常量名或者變數名當做佔位符加入到長字串中,Swift 會用當前常量或變數的值替換這些佔位符。將常量或變數名放入圓括號中,並在開括號前使用反斜槓將其轉義:

print("The current value of friendlyWelcome is \(friendlyWelcome)")
//輸出 "The current value of friendlyWelcome is Bonjour! 

注意:字串插值所有可用的選項,請參考字串插值。