嚴(yán)格和松散
swift不會進(jìn)行隱式轉(zhuǎn)換叁熔, 兩個變量要進(jìn)行計算的時候,一定要是相同的類型。swift對于類型要求特別嚴(yán)格。
例如:不能讓一個整型和浮點型相加
可以進(jìn)行顯式轉(zhuǎn)換
let num1 = 1
let num2 = 1.5
let num3 = num1 + num2 //是錯誤的
//進(jìn)行強制類型轉(zhuǎn)換
let num4 = Double(num1) + num2
自動推導(dǎo)
swift可以根據(jù)右邊的值自動推導(dǎo)變量/常量的類型
let a = 1
let b = 2.1
//自己定義類型
let i: CGFloat = 10.1
if分支
if
let num = 20
if num > 10 {
print("大")
}
- if沒有小括號
- 必須有花括號
- swift中宁昭,只有TRUE和FALSE,沒有“非零即真”
例如:
if num > 5{
print("哈哈")
}
//以上是錯誤的
//懶加載可以寫成
if dataList == nil{
...
}
if let(Optional Binding)
if let
是判斷并且設(shè)置數(shù)值
//確保myUrl有值酗宋,才進(jìn)入分支
if let myUrl = url {
print(myUrl)
}
通過在條件判斷語句中(如if积仗、while等)把Optional值直接給一個臨時常量,Swift會自動檢測Optional是否包含值蜕猫,如果包含值寂曹,會隱式的拆包并給那個臨時常量,在接下來的上下文中就能直接使用這個臨時常量
??
操作
var oName = "張三"
let cName = oName ?? "abc"
//如果oName為nil,則cName為abc隆圆,反之芬失,為oName
var dataList: [String]?
dataList = nil//["zhansan", "lisi"]
//dataList的問號,表示它可能為 nil
//如果為nil匾灶, .count 不會報錯,仍然返回nil
//一旦dataList為空租漂,就返回0阶女,反之,返回count的結(jié)果
let count = dataList?.count ?? 0
//"!"感嘆號表示強行解包哩治,結(jié)果由程序員負(fù)責(zé)秃踩,出事了程序員背鍋
let count1 = dataList!.count//報錯qwqww
三目
let a = 80
let b = 20
let c = a > b ? 100 : -100
//如果a > b, c就是100业筏,反之是-100
Optional
意思為可選的憔杨,可以有值,可以為nil
!
為強行解包蒜胖,程序員認(rèn)為此處一定有值消别,因此用!
強行解包,一旦出現(xiàn)錯誤台谢,就會停在此處.
let url = NSURL(string: "www.google.com/中文")
//let request = NSURLRequest(url: url)
//更安全的寫法
if url != nil {
let request = NSURLRequest(url: url! as URL)
}