標籤:swift 文法 入門 變數 基礎
最近開始學習swift,把學習的過程和總結整理成一個系列,方便日後回顧總結。
基本文法基礎文法
swift中每一行結束後不需要加分號,多個語句在同一行內需要用分好隔開
//表示注釋,或者用/* ……*/
常量
常量是指定義之後無法修改值的量,比如設定一個最大嘗試登陸的次數,它的值一旦被確定,就不應該在程式中被修改。swift中的常量用let表示,定義方法如下:
let maxAttemptTime = 3 //正確maxAttemptTime = 4 //錯誤,常量一旦定義不可以改變let maxAttemptTime //錯誤
另外要注意的是,常量在定義的時候必須要賦初值,當然也可以不這麼做,後面會詳細介紹。
變數
和常量類不同的是,變數用var表示,可以隨意改變值
var currentAttemptTime = 1 //正確currentAttemptTime = currentAttemptTime + 1 //正確
列印常量和變數
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 = 20 //自動推導為Int類型var pi = 3.1415926 //自動推導為Double類型
寬類型有限
既然swift支援類型推導,那麼π的近似值3.1415926,會被推導為什麼類型呢?是Float還是Double? 答案是Double,因為swift具有寬類型優先的特性,也就是為自動推導為取值範圍更寬泛的類型。
類型標註
最開始提到必須要給常量或者變數賦初值,如果不想賦初值,或者不習慣自動類型推導,我們還可以顯示的給常量或者變數標註類型,這被稱為“類型標註”
var name: String //在變數名後加上冒號和類型名來進行類型標註//經過類型標註後,可以不賦初值var name: String = "kt" //人為標註為String類型var age: Int = 20 //人為標註為Int類型//這種情況下的類型標註有些多此一舉
型別安全
swift支援類型推導,這個功能很方便,與此同時,swift也是嚴謹的,因為它是型別安全的。
所謂的型別安全是指,不支援常量、變數之間的隱式類型類型轉換。
var a = 1var b = 1.5var c = a + b //報錯
也就是說,不同類型的變數(常量)不可以出現在”+、-、*、/等運算子兩側”。
所謂的常量、變數之間,其實是指字面量之間的隱式類型轉換是可以的。比如如下代碼:
var pi = 3 + 0.1415926 //這個必須可以啊,否則就亂套了。
類型轉換
如果我希望把整數型和浮點型變數相加怎麼辦呢,可以使用強制類型轉換,又稱顯式類型轉換。
var a = 1var b = 1.5var c = a + b //報錯var c = Double(a) + b //正確,得到值為2.5的Double型變數cvar 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入門(一)——基本文法