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