Swift入門(一)——基本文法

來源:互聯網
上載者:User

標籤: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

需要說明三點:

  1. 精度由高向低或者由低向高都可以,不過高精度轉向低精度會丟失小數點後的資料。
  2. 上述代碼不可以改為“var c = Float(a) + b”,理由是型別安全 + 寬類型優先。
  3. 注意和C語言的文法區別,C語言中的寫法為(int)a,swift中的括弧應加在變數上。
類型別名

通過typelias關鍵字可以重新命名類型,類似於C語言中的typedef,不過更簡單。

typealias Name = String //現在Name類型和String類型是完全一樣的了。var myName: Name = "kt"

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Swift入門(一)——基本文法

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.