Swift語言指南(一) Swift語言基礎:常量和變數

來源:互聯網
上載者:User

Swift 是開發 iOS 及 OS X 應用的一門新程式設計語言,然而,它的開發體驗與 C 或 Objective-C 有很多相似之處。

Swift 提供了 C 與 Objective-C 中的所有基礎類型,包括表示整數的 Int,表示浮點數的 Double 與 Float,表示布爾值的 Bool,以及表示純文字資料的 String。 Swift 還為兩個基本集合類型 Array 與 Dictionary 提供了強大的支援,詳情可參考 (集合類型)Collection Types。

與 C 語言類似,Swift 也採用變數儲存資料,並通過標識符來引用變數值。 Swift 還擴充了值不可變的量--即常量,使它比 C 語言中的常量強大得多。 當在 Swift 中操作不需要改變值的資料時,使用常量可使代碼更安全、更簡潔。

除常見類型以外,Swift 還引入了 Objective-C 中不存在的進階類型,其中包括元組(tuple),可以建立或傳遞一組值。函數可以將多個值作為整體(多個元組值的組合)返回給調用方。

Swift 還引入了可選值(optional types),可處理不存在的值。可選值可以“存在一個值 x”,也可以“不存在任何值”。可選值與 Objective-C 為指標賦 nil 相似,但在 Swift 中可以對任意類型使用,而不只針對類。可選值比 Objective-C 的 nil 指標更安全且語義更生動,在 Swift 最強大的諸多功能中得到了深入的應用。

可選值是 Swift 型別安全的一點體現。Swift 可協助你清晰地瞭解代碼能處理的資料類型。如果代碼希望得到 String 類型,型別安全的特性將阻止你錯誤地將 Int 類型傳遞過去。這樣可以在開發過程中儘可能早地發現與修正問題。

常量與變數

常量及變數將名稱(如maximumNumberOfLoginAttempts 或 welcomeMessage) 與特定類型的值(如數字 10 或字串 "Hello")關聯起來。常量一旦賦值,其值不可再改變;而變數以後還可以再重新賦值。

常量與變數的聲明

常量與變數使用前必須先分別用let關鍵字和var關鍵字聲明,下面的例子展示了常量和變數如何跟蹤使用者的登入次數:

1 let maximumNumberOfLoginAttempts = 10
2 var currentLoginAttempt = 0

上例的代碼可以解讀為:聲明一個名為maximumNumberOfLoginAttempts的常量,賦值為10。聲明一個變數currentLoginAttempt,將其值初始化為0。

允許使用者嘗試登入的最大次數賦值給了一個常量,因為最大次數的值在運行時是不變的,而當前登入次數賦值給了一個變數,因為當前嘗試登陸失敗的次數是累加的。

你可以使用逗號分隔的方式在一行內完成多個常量或變數的賦值:
var x = 0.0, y = 0.0, z = 0.0

練習:

用let關鍵字聲明一個常量來儲存代碼中不會被改變的值,使用var關鍵字儲存代碼中需要改變的值

類型標識

聲明常量或變數時刻提供類型標識,以指定該常量或變數可以儲存的值的類型。使用時在常量或變數名後面跟一個冒號,一個空格再加上要使用的類型名稱:

1 var welcomeMessage: String

冒號在聲明表示“...的類型是...”,所以,上例中的代碼意思是:“變數welcomeMessage的類型是String”。

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

“String類型”意味著可以儲存“任何String類型的值”,也就是說可以儲存的“東西的類型(或東西的種類)”。

變數welcomeMessage現在可以儲存任一字元串類型的值,不會報錯:

1 welcomeMessage = "Hello"

註:

在實踐中需要類型標識的情況非常罕見。如果你在定義常量或變數時提供了初始值,Swift 通常能夠推斷出該常量或變數應使用的類型,詳情參見 型別安全及類型推斷(後續章節譯到)。在上述 welcomeMessage 例子中,沒有提供初始值,因此才通過類型說明給 welcomeMessage 變數明確指定類型,而沒有讓它通過初始值推斷。

常量與變數的命名

你幾乎可以使用任何字元來給常量或變數命名,包括Unicode字元:

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

常量及變數的名稱不可以包含數學符號、箭頭、私人(即無效的)Unicode 碼數,或繪製線條/方框用的字元。並且名稱不能以數字開頭, 但除了開頭的其他地方都可以使用數字。

一旦你聲明了一個指定了實值型別的常量或者變數,那你就不能再次給它重新聲明同名的常量或變數了,也不能更改使其存放不同類型的值,更不能把常量再次聲明為變數,變數再次聲明為常量。

註:

如果需要將常量或變數命名為 Swift 的保留字,可以在將該保留字作為名稱使用時用反引號(`)包圍。儘管如此,你還是應該避免將保留字作為名稱使用,除非迫於無奈。

你可以將變數的值重新更改為其它同類型的值,如下例中變數friendlyWelcome的值由“hello!”變為“Bonjour!”:

1 var friendlyWelcome = "Hello!"
2 friendlyWelcome = "Bonjour!"
3 //friendlyWelcome 的值現在為 "Bonjour!"

與變數不同的是,常量一旦被賦值就不可再更改。嘗試更改將會報錯,下面代碼編譯時間會報錯:

1 let languageName = "Swift"
2 languageName = "Swift++"
3 // 編譯時間報錯 - languageName 不可更改

常量和變數的輸出

通過printIn函數輸出常量和變數的當前值:

1 println(friendlyWelcome)
2 // 輸出 "Bonjour!”

println 是一個全域函數,輸出值並在末尾接分行符號。例如在 Xcode 環境開發,println 會將輸出內容輸出至 Xcode 的“控制台”面板。(另一個函數 print 執行幾乎一樣的操作,不同之處在於,後者不會在輸出值末尾換行。)

與 Cocoa 的 NSLog 函數相似,println 還能輸出更複雜的日誌訊息,訊息內容可以包含常量或變數的當前值。

Swift用字串插入(string interpolation)的方式把常量名或者變數名當做預留位置加入到長字串中,提示Swift用當前常量或變數的值去替換這些預留位置。將常量或變數名放入反斜線符加一對圓括弧中--"\()":

1 println("The current value of friendlyWelcome is \(friendlyWelcome)")
2 // 輸出 "The current value of friendlyWelcome is Bonjour!”

註:

字串插入可用的所有選項參見字串插入(後續章節譯到)

作者:cnblogs Joe.Huang

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.