Swift學(xué)習(xí)-變量&常量 數(shù)據(jù)類型 邏輯分支和循環(huán)使用

Playground

介紹

Playground是從Xcode6開始出現(xiàn)(Swift開始出現(xiàn))

對于學(xué)習(xí)Swift基本用法非常方便

優(yōu)點(diǎn)

1.所見即所得,我們不需要運(yùn)行模擬器就能直接查看結(jié)果

2.語法特性發(fā)生改變時(shí),可以快速查看(swift發(fā)生變化的話 可以直接在Playground查看 而且Playground本身是一個(gè)文件 在后續(xù)學(xué)習(xí)中 如果語法發(fā)生改變 我們可以直接打開Playground文件 查看哪里發(fā)生了改變)

Swift中的常量與變量

使用

定義標(biāo)識符必須指定是常量(let)還是變量(var)

優(yōu)先使用常量(let)

常量的本質(zhì)是他保存的內(nèi)存地址不可以更改 但是可以通過內(nèi)存地址拿到對象內(nèi)部的屬性 修改對象的屬性

// let m : Int = 10可以省略寫成下面這樣

let m = 10

// n是Double類型

let n = 10.00

var view1 = UIView()

view.alpha = 0.5 //這里是通過內(nèi)存地址找到對應(yīng)的對象 修改了對象的alpha屬性 所以這樣是可以的 我們操作的是地址指向的對象 不是地址

swift中的數(shù)據(jù)類型

Swift類型的介紹

Swift中的數(shù)據(jù)類型也有:整型/浮點(diǎn)型/對象類型/結(jié)構(gòu)體類型等等

先了解整型和浮點(diǎn)型

整型

有符號

Int8 : 有符號8位整型

Int16 : 有符號16位整型

Int32 : 有符號32位整型

Int64 : 有符號64位整型

Int : 和平臺相關(guān)(默認(rèn),相當(dāng)于OC的NSInteger)

無符號

UInt8 : 無符號8位整型

UInt16 : 無符號16位整型

UInt32 : 無符號32位整型

UInt64 : 無符號64位整型

UInt : 和平臺相關(guān)(常用,相當(dāng)于OC的NSUInteger)(默認(rèn))

浮點(diǎn)型

Float : 32位浮點(diǎn)型

Double : 64浮點(diǎn)型(默認(rèn))

Swift中的類型推導(dǎo)

Swift是強(qiáng)類型語言

Swift中任何一個(gè)標(biāo)識符都有明確的類型

注意:如果定義一個(gè)標(biāo)識符時(shí)有直接賦值,那么標(biāo)識符后面的類型可以省略,因?yàn)閟wift有類型推導(dǎo),會根據(jù)后面的數(shù)據(jù)復(fù)制來決定前面的數(shù)據(jù)類型 可以通過option+鼠標(biāo)左鍵來查看變量的數(shù)據(jù)類型

// let m : Int = 10可以省略寫成下面這樣

let m = 10

// n是Double類型

let n = 10.00

var view1 = UIView()

Swift中的基本運(yùn)算

swift在進(jìn)行基本運(yùn)算的時(shí)候必須保持?jǐn)?shù)據(jù)類型一致 否則會報(bào)錯(cuò)

swift只有相同類型才能運(yùn)算

swift沒有隱式轉(zhuǎn)換

let result = m + n 這樣式錯(cuò)誤的 因?yàn)閙是Int類型 n是Double類型 不能進(jìn)行計(jì)算

//1.可以把m轉(zhuǎn)換成Double類型進(jìn)行轉(zhuǎn)換 得到的result1也是Double類型

let result1 = Double(m) + n //轉(zhuǎn)換的話是類型(標(biāo)識符)跟OC不一樣 OC的話是(類型)標(biāo)識符

//2.也可以把n轉(zhuǎn)換成Int類型 相應(yīng)的result2也是Int類型

let result2 = m + Int(n)

邏輯分支

分支即if/switch/三目運(yùn)算符等判斷語句 通過分支語句可以控制程序的執(zhí)行流程

if語法

跟OC有點(diǎn)區(qū)別

判斷句可以不加()

判斷句中必須有明確的真假 不再有非0即真 必須有明確的Bool值 Bool值有兩個(gè)值 true/false

let p = 10

/* 錯(cuò)誤寫法

if p {

print(p)

}

這種寫法在OC中是可以的 因?yàn)镺C中有個(gè)非0即真 但在swift中是錯(cuò)誤的

*/

//正確寫法

if p > 0 {//可以不寫()

print(p)

}

if-else

跟OC相似

let score = 80

if score < 0 || score > 100 {

print("不正常的分?jǐn)?shù)")

} else if score < 60 {

print("不及格")

} else if score <= 80 {

print("良好")

} else if score <= 90 {

print("優(yōu)秀")

} else {

print("完美")

}

三目運(yùn)算

三目運(yùn)算的方法跟OC基本一樣

let x = 8

let y = 10

let max = x > y ? x : y

print(max)

guard的使用

guard是swift2.0增加的語法

它與if語句非常相似 目的是為了增強(qiáng)程序的可讀性

注意

* guard必須在函數(shù)中調(diào)用

guard語句必須帶有else語句

當(dāng)條件表達(dá)式為ture的時(shí)候 跳過else語句中的內(nèi)容 執(zhí)行語句組內(nèi)容

當(dāng)條件表達(dá)式為false的時(shí)候 執(zhí)行else語句中的內(nèi)容 else語句中必須有跳轉(zhuǎn)語句 跳轉(zhuǎn)語句一般是return break continue和throw

比如一個(gè)去網(wǎng)吧上網(wǎng)的場景 必須年滿18歲才能上網(wǎng) 如果是if語句的話

let age = 20

//聲明函數(shù)

func online(age : Int) {

// 用if-else語句

if age < 18 {

print("不可以上網(wǎng)")

} else {

print("可以上網(wǎng)")

}

//用guard語句表示

guard age >= 18 else {//else里面是未滿18的

print("未滿18歲 不能上網(wǎng)")

return

}

print("可以上網(wǎng)")

從上面的例子很難看出guard的可讀性的優(yōu)勢 但是換一個(gè)場景 比如: 想要上網(wǎng)的話需要滿足18歲 必須有身份證 必須有錢才能夠上網(wǎng)

// 用if-else語句的話

/*

if age >= 18 {

//

if 帶了身份證 {

if 拿了錢 {

print("開始開機(jī)上網(wǎng)")

} else {//沒有拿錢

print("沒有拿錢");

}

} else {//沒有身份證

print("沒拿身份證")

}

} else {

print("未滿18 不能上網(wǎng)")

}

*/

//使用guard語句的話

/*

guard age >= 18 else {

print("未滿18 不能上網(wǎng)")

return

}

guard 帶了身份證 else {

print("沒拿身份證")

return

}

guard 拿了錢 else {

print("沒有拿錢");

return

}

print("開始開機(jī)上網(wǎng)")

*/

從上面的例子中可以看出 guard的語句更具有可讀性

}

//調(diào)用函數(shù)

online(age: age)

Switch的用法

swift對Switch進(jìn)行了大大的增強(qiáng),使其擁有其他語言中沒有的特性

switch的簡單使用

基本用法跟OC一致 不同之處就是swift的switch后可以不跟() case后可以不寫break(默認(rèn)會有break)

//0: 男 1:女 其它:其它

let sex = 0

switch sex {

case 0:

print("男")

case 1 :

print("女")

default:

print("其它")

}

基本用法補(bǔ)充

一個(gè)case判斷中可以判斷多個(gè)值 多個(gè)值以 , 分開

switch sex {

case 0 , 1:

print("正常人")

default:

print("其它")

}

如果希望一個(gè)case出現(xiàn)case穿透 可以使用fallthrouch 不過很少使用

switch sex {

case 0:

print("男")

fallthrough

case 1:

print("正常人")

default:

print("其它")

}

switch可以判斷浮點(diǎn)型 OC中是不可以的

let pai = 3.14

switch pai {

case 3.14:

print("π")

default:

print("非π")

}

switch可以判斷字符串

let operation = "+"

let e = 10, f = 20

var result = 0

switch operation {

case "+" :

result = e + f

case "-" :

result = e - f

case "*" :

result = e * f

case "/" :

result = e / f

default:

print("非法的操作")

}

print(result)

switch可以判斷區(qū)間

什么是區(qū)間?

通常我們是指的數(shù)字區(qū)間: 0~100, 100~200

swift常見的有兩種區(qū)間

半開半閉區(qū)間: 0..< 10 表示的是0~9 不包括 10

閉區(qū)間: 0...10 表示的是0~10 包括10

//還是以考試分?jǐn)?shù)為例

switch score {

case 0..<60:

print("不及格")

case 60..<80:

print("良好")

case 80..<90:

print("優(yōu)秀")

case 90...100:

print("完美")

default:

print("不正常的分?jǐn)?shù)")

}

循環(huán)語句

for循環(huán)

// OC中的寫法

for (int a = 0; i < 10; i++) {

NSLog(@"%d", i);

}


//swift寫法

for i in 0..<10 {

print(i)

}

//當(dāng)我們在循環(huán)語句中不用下標(biāo)值的時(shí)候 可以使用_代替

for _ in 0...9 {

print("hello world")

}

while循環(huán)

while和if一樣 必須有明確的真假 沒有非0即真 ()可以省略

var q = 0

while q < 10 {

q += 1// ++ -- 操作在3.0之后被廢棄了

}

// do while 在swift中 使用repeat關(guān)鍵字 代替do-while中do關(guān)鍵字

var g = 10

repeat {

print(g)

g += 1

} while g < 20

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容