swift初探

專注的我發表於2016-06-13
使用swift開發專案已經有一年多了,這一年多的時間裡,蘋果多次升級更改swift語法。這也直接導致每次更新xcode後,專案程式碼做大量的語法更改。哎,也不知道苦逼的swift什麼時候可以穩定下來,swift最奇葩的地方在於更新版本不相容低版本的一些語法。歐啦,抱怨完了,開始我們的swift之旅吧。
在swift的世界裡所有的資料型別都已兩種形式出現,要麼是變數(var),要麼是常量(let),與oc相比簡易了很多。

1、定義變數和常量

var intVariable: int = 42 
intVariable = 90
let floatValue: CGFloat = 32

swift 的變數具有型別安全的特性,所有給變數賦的值型別必須和變數型別匹配。否則編譯報錯。

intVariable = 9.9 //編譯報錯

定義變數和常量時如果等號右邊能倒推出資料型別,那麼可以不指定變數型別。

var implicationInt = 2 // implicationType int 型別
var implicationDouble = 2.2 // Double 型別(小數被預設為Double)

2、不同型別賦值
不同型別之間賦值時,不會隱含的轉換為目標型別。所以得明確的指定成目標型別。

implicationInt = Int(implicationDouble) //implicationDouble不能超過Int的最大值

3、陣列、字典
初始化陣列、字典

var books = ["語文","數學"]
var dic = ["bookname":"語文","price":"213"]

建立空陣列、字典

var books = [String]()
var books = Array<String>()
var dic = [String:String]()
var dic = Dictionary<String,String>()

4、控制流 for 迴圈、while迴圈
for迴圈

let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
    if score > 50 {
        teamScore += 3
    } else {
        teamScore += 1
    }
}
print(teamScore)

while迴圈和oc稍有改動,把 do{}while(condition) 該為 repeat{}while condition

var n = 2
while n < 100 {
    n = n * 2
}
print(n)

var m = 2
repeat {
    m = m * 2
} while m < 100
print(m)

5、元祖 Tuples
有的時候我們需要一個函式返回兩個值,在oc中是不能實現的。在swift中引入了一種資料型別: 元祖(Tuples)。元祖是由多個值構成的一個值,其中的每一個值可以為任何資料型別。

  let error = (404,"page not found")
  let (status, string) = error // status 為404, string 為“page not found”
  //如果只想取其中的一個值,
  let (status, _) = error
這篇文章不是要講swift資料型別以及其用法,只是讓大家對swift大概有個瞭解,在以後的章節裡會詳細講一下資料型別的用法。