常量 變量
- 定義一個(gè)變量(var)
var greeting: String = "hello"
- 定義一個(gè)常量(let)
let greeting: String = "hello"
- 變量是可以修改的,常量不可以修改
let greeting: String = "hello"
greeting = "你好" // 這一句會(huì)報(bào)錯(cuò),因?yàn)槌A渴遣豢梢孕薷牡?
- Swift,具有類型推斷機(jī)制非常的智能,可以根據(jù)后面所賦值的類型推斷出變量的類型(可以去掉greeting的類型聲明`,我們發(fā)現(xiàn)不用類型聲明也是可以的,這樣可以提高我們編碼的速度(建議使用類型推斷))
var greeting = "hello"
greeting = "你好"
-
在開(kāi)發(fā)中盡量使用常量
: 這是因?yàn)槭褂贸A坎粌H可以使你的項(xiàng)目更加強(qiáng)健,還可以讓編譯器優(yōu)化你的代碼,今后你會(huì)發(fā)現(xiàn)你使用let遠(yuǎn)比var使用頻率高
字符串
Swift中的字符串不同于中Objective-C的字符串
Objective-C中的NSString是引用類型,也就是一個(gè)對(duì)象.但是Swift中的字符串是值類型
,這也就意味著當(dāng)你把字符串賦值給一個(gè)常量\變量或者是函數(shù)的一個(gè)參數(shù)的時(shí)候,這個(gè)時(shí)候?qū)嶋H上是字符串的副本Swift字符串插入
\()
相比[NSString stringWithFormating:]不知道牛逼多少倍
var address = (742, "Evergreen Terrace")
let (house, street) = address
let str = "I live at \(house + 10), \(street.uppercaseString)"println(str)
數(shù)字類型
- 有些時(shí)候數(shù)字有很多0的時(shí)候,我們可以使用_來(lái)分割一下,這樣可以方便我們查看(習(xí)慣每三位就用一個(gè)下劃線)
let million = 1_000_000
- 計(jì)算一個(gè)圓的面積
let radius = 4
let PI = 3.14
var area = radius * radius * PI // 報(bào)錯(cuò)
- 注意 :Swift不允許這樣寫(xiě),最后一句要改成這樣
var area = Double(radius) * Double(radius) * PI
- Swift提供了一個(gè)很好用的處理溢出的問(wèn)題就是使用&+ &- 等等(相當(dāng)一個(gè)繩子頭尾相連,最大值再加一就會(huì)變成最小值)
var num = Int.max // 取出Int類型中最大數(shù)一個(gè)數(shù)
var num2 = num &+ 1 // &+1之后結(jié)果是-9223....
元組
- 元組是一個(gè)多中類型組成的一個(gè)組(例如,數(shù)學(xué)中的坐標(biāo)可以用更可以用給一個(gè)元組來(lái)表示),元組中的成員的類型沒(méi)有要求是一致的
- 通過(guò)所在元組的位置`
var address = (743, "Evergreen Terrace") // 創(chuàng)建一個(gè)元組
println(address.0) // 可以通過(guò)編號(hào)來(lái)取出對(duì)應(yīng)的值
println(address.1)
- 也可以在使用名字來(lái)取出元組中的值
var address = (742, "Evergreen Terrace")
let (house, street) = addressprintln(house) // 通過(guò)元組中的成員名字來(lái)訪問(wèn)元組中的數(shù)值
println(street)
控制流
- 我們?cè)趂or循環(huán)中看到的
1...5
等價(jià)于Rang(start:1, end: 6)
代表的是一個(gè)范圍
for i in 1...5{ // 注意這里沒(méi)有小括號(hào)
println ("\(i)")
}
switch
- Swift中的switch與Objective-C中switch不同點(diǎn)
- switch中不僅僅能放int類型,還可以放入其他類型(例如枚舉,結(jié)構(gòu)體)
- switch的case可以同時(shí)匹配多個(gè)值,或者是一個(gè)范圍
- 如果匹配了一個(gè)值,并執(zhí)行了當(dāng)中的代碼,switch就不會(huì)往下執(zhí)行這個(gè)和其他語(yǔ)言很相反.如果想讓switch語(yǔ)句繼續(xù)往下執(zhí)行,就要是用
fall- though
這個(gè)關(guān)鍵字 - Swfit中的switch非常智能,如果發(fā)現(xiàn)你沒(méi)有列舉所有的可能,就要求你是實(shí)現(xiàn)
defaul
t這個(gè)可能值