基本語(yǔ)法
1.常量和變量(let and ?var)
let 定義的常量, 已經(jīng)賦值之后,就不能修改其值.如果強(qiáng)制修改,系統(tǒng)報(bào)錯(cuò)
var 定義的變量, 已經(jīng)賦值之后,可以修改
2.swift中自動(dòng)推導(dǎo)類(lèi)型
在swift 中只用這兩種修飾變量,不想OC和其他語(yǔ)言,可以有好多關(guān)鍵字修飾 變量, swift 會(huì)根據(jù) 當(dāng)前定義的值,自動(dòng)的推導(dǎo)是什么類(lèi)型的
例如 let num = 2 --> num 為int ? let num = 2.0 ?--> num 為double ?let num = "123" --> num 為 字符串string類(lèi)型的.......
swift中沒(méi)有隱式的轉(zhuǎn)換 ? 對(duì)數(shù)據(jù)類(lèi)型要求極其的嚴(yán)格,任何的時(shí)候都不會(huì)自動(dòng)的進(jìn)行隱式轉(zhuǎn)換
例如? let x2 =100 ??let y2 =10.5 ??let num1 = Double(x2) + y2 ? ??let num2 = x2 + Int(y2)
3.Optional 可選值
? ? 定義變量,如果變量定義成"可選的", 可以給這個(gè)變量指定一個(gè)值,也可以不設(shè)置值,默認(rèn)為nil ? ? ? ? ? ? ? ? ? ? ? 定義變量,在類(lèi)型后面加上一個(gè)"?",表示這個(gè)變量是可選的 ?---- ?var temp:string? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 常數(shù)可選項(xiàng)需要設(shè)置一個(gè)初始值,主要用于構(gòu)造函數(shù)中 --- var num:int? = 10 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果可選項(xiàng)Option的值是一個(gè)nil, 不允許參與計(jì)算 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果可選項(xiàng)Option有值,只有解包之后,才能夠才有運(yùn)算,在變量后面+"!",表示強(qiáng)行解包
4.?? 運(yùn)算符
? ? ??運(yùn)算符可以用于判斷變量/常量的數(shù)值是否是nil,如果是則使用后面的值替代? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
在使用 Swift 開(kāi)發(fā)時(shí)椎瘟,??能夠簡(jiǎn)化代碼的編寫(xiě)
5.控制流
? if? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在swift中,沒(méi)有向C語(yǔ)言中的那樣,存在"非零" 及真 的情況, 在邏輯判斷的時(shí)候,要顯示的指明具體的判斷條件是(true/false). 還有和C語(yǔ)言不同的是, if 后面的條件判斷括號(hào)()是可以省略的,當(dāng)時(shí)后面的{}是不能省略的? ? 在三目運(yùn)算符,和C語(yǔ)言的用法是一樣的 (?? :)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在swift中添加了,可選判斷條件 if let? guard let? 這兩個(gè)判斷的情況正好相反? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 為什么要引入可選項(xiàng)的判斷,可選項(xiàng)的值可能是空值nil,是不被允許做計(jì)算的,要確保計(jì)算的時(shí)候一定是有值的,防止程序崩潰? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if let 條件為真 {} 執(zhí)行大括號(hào)的代碼? ? if let 條件為假 {} 不執(zhí)行大括號(hào)的代碼? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if let 還可以和 where 一起使用 --> if let 后條件為真 同時(shí)where 后面的條件也為真 ,才能執(zhí)行? ? ? ? ? ? ? ? if let Ourl = url ?where ?Ourl.host=="www.baidu.com" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if let 不能夠和 && 和 ?|| ?等條件判斷一起使用 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?guard ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?guard let 條件 ?else {...} ? 條件為 "nil" 時(shí), 執(zhí)行{...} 的內(nèi)容 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?guard 的好處,能判斷每一個(gè)值,在真正代碼邏輯,省略了一層嵌套