最近開始學習swift,把學習的過程和總結整理成一個系列,友善日後回顧總結。
基本文法
基礎文法
swift中每一行結束後不需要加分号,多個語句在同一行内需要用分好隔開
//表示注釋,或者用
常量
常量是指定義之後無法修改值的量,比如設定一個最大嘗試登陸的次數,它的值一旦被确定,就不應該在程式中被修改。swift中的常量用let表示,定義方法如下:
let maxAttemptTime = //正确
maxAttemptTime = //錯誤,常量一旦定義不可以改變
let maxAttemptTime //錯誤
另外要注意的是,常量在定義的時候必須要賦初值,當然也可以不這麼做,後面會詳細介紹。
變量
和常量類不同的是,變量用var表示,可以随意改變值
var currentAttemptTime = //正确
currentAttemptTime = currentAttemptTime + //正确
列印常量和變量
OC中的NSLog方法依然可用,也可以用swift的println()方法。
NSLog("hello world")
println("hello world")
//以上兩句等價,輸出結果都是"hello world"
//也可以列印變量或者常量
var name = "kt"
NSLog("name = \(name)")
println("name = \(name)")
//以上兩句等價,輸出結果都是"name = kt"
swift也支援print方法,與println不同的是,println在結尾會自動加上換行符,這與java的文法是一緻的。
類型
類型推導
習慣了oc、c++或者java的程式猿會覺得沒有變量的類型很奇怪,其實swift和php與js類似,都是支援類型推導功能的。
所謂的類型推導,就是說swift會根據變量的實際值,自動推導出變量所屬的類型。
swift中的基礎類型有Int、Double、String、UInt8、Character、Bool等。就不一一解釋了。Swift中所有的類型都是首字母大寫的。
var name = "kt" //自動推導為String類型
var age = //自動推導為Int類型
var pi = //自動推導為Double類型
寬類型優先
既然swift支援類型推導,那麼π的近似值3.1415926,會被推導為什麼類型呢?是Float還是Double? 答案是Double,因為swift具有寬類型優先的特性,也就是為自動推導為取值範圍更寬泛的類型。
類型标注
最開始提到必須要給常量或者變量賦初值,如果不想賦初值,或者不習慣自動類型推導,我們還可以顯示的給常量或者變量标注類型,這被稱為“類型标注”
var name: String //在變量名後加上冒号和類型名來進行類型标注
//經過類型标注後,可以不賦初值
var name: String = "kt" //人為标注為String類型
var age: Int = //人為标注為Int類型
//這種情況下的類型标注有些多此一舉
類型安全
swift支援類型推導,這個功能很友善,與此同時,swift也是嚴謹的,因為它是類型安全的。
所謂的類型安全是指,不支援常量、變量之間的隐式類型類型轉換。
var a =
var b =
var c = a + b //報錯
也就是說,不同類型的變量(常量)不可以出現在”+、-、*、/等運算符兩側”。
所謂的常量、變量之間,其實是指字面量之間的隐式類型轉換是可以的。比如如下代碼:
類型轉換
如果我希望把整數型和浮點型變量相加怎麼辦呢,可以使用強制類型轉換,又稱顯式類型轉換。
var a =
var b =
var c = a + b //報錯
var c = Double(a) + b //正确,得到值為2.5的Double型變量c
var c = a + Int(b) //也正确,得到值為2的Int型變量c
需要說明三點:
- 精度由高向低或者由低向高都可以,不過高精度轉向低精度會丢失小數點後的資料。
- 上述代碼不可以改為“var c = Float(a) + b”,理由是類型安全 + 寬類型優先。
- 注意和C語言的文法差別,C語言中的寫法為(int)a,swift中的括号應加在變量上。
類型别名
通過typelias關鍵字可以重新命名類型,類似于C語言中的typedef,不過更簡單。
typealias Name = String //現在Name類型和String類型是完全一樣的了。
var myName: Name = "kt"
附錄
檢視完整專欄——《Swift輕松入門》
【Swift入門(一)——基本文法】
【Swift入門(二)——字元與字元串】
【Swift入門(三)——元組(Tuple)】
【Swift入門(四)——可選類型(Optionals)與斷言(Assert)】
【Swift入門(五)——數組(Array)】
【Swift入門(六)——字典(Dictionary)】
【Swift入門(七)——結構體(Struct)】
【Swift入門(八)——功能強大的求餘運算符】
【Swift入門(九)——String與Int、Double、Float等數字互相轉換】
【Swift入門(十)——循環引用、弱引用和無主引用】
【Swift入門(十一)——類型轉換與is、as操作】
【Swift入門(十二)——利用Extension添加逆序輸出字元串方法】