前言
從今天開始,我會記錄Swift的學(xué)習(xí)過程,有興趣的朋友可以跟著一起學(xué)習(xí)。在這里推薦幾個學(xué)習(xí)網(wǎng)址,大家共勉,我的學(xué)習(xí)記錄是根據(jù)第一個鏈接寫的。
swift學(xué)習(xí)鏈接1
swift學(xué)習(xí)鏈接2
1.常量和變量
用let來聲明常量,用var來聲明變量。
let a = 10;
var b = 0;
可以理解為:聲明了一個名字為a的常量,并給它賦值為10;
聲明了一個名字為b的變量,并給它賦初始值為0;
可以在一行聲明多個常量或變量:
var x = 0.0, y = 0.0, z = 0.0
2.類型標(biāo)注
聲明常量或變量的時候可以加上類型標(biāo)注
var a : String
a = "hello"
聲明一個類型為String,名字為a的變量
給變量a賦值
可以定義多個同類型的變量
var a, b, c:Double
3.打印輸出
Swift 用字符串插值(string interpolation)的方式把常量名或者變量名當(dāng)做占位符加入到長字符串中,Swift 會用當(dāng)前常量或變量的值替換這些占位符。將常量或變量名放入圓括號中,并在開括號前使用反斜杠將其轉(zhuǎn)義:
print("a 的值為\(a)")
4.注釋
//這是單行注釋
/*這是多
行注釋*/
5.類型轉(zhuǎn)換:Int轉(zhuǎn)Double
let three = 3
let p = 22.11
let w = Double(three) + p
6.布爾值
let a = true
let b = false
7.元組
let htt = (404,"not found")
http404Error 的類型是 (Int, String),值是 (404, "Not Found")
可以將元組分解
let (code,message) = htt
print("this code is \(code)")
print("this message is \(message)")
如果只需要一部分元組,分解是可以把不需要的忽略,用_標(biāo)記
let (code,_) = htt
可以用下標(biāo)來訪問元組中的元素
print("this code is \(htt.0)")
print("this message is \(htt.1)")
給元素命名,然后通過名字來獲取這些元素的值:
let htt = (code:200,message:"ok")
print("this code is \(htt.code)")
print("this message is \(htt.message)")
8.可選類型
var a : Int? = 404 //a包含一個可選的Int
如果聲明一個可選的常量或變量但是沒有賦值,則默認為nil
var a : String?
9.隱式解析可選類型
一個隱式解析可選類型其實就是一個普通的可選類型,但是可以被當(dāng)做非可選類型來使用,并不需要每次都使用解析來獲取可選值。下面的例子展示了可選類型String和隱式解析可選類型String之間的區(qū)別
let a : String? = "hahaha"
let b : String = a! //需要驚嘆號來獲取值
let a : String! = "hehehe"
let b : String = a //不需要驚嘆號來獲取值
注意
如果一個變量之后可能變成nil的話請不要使用隱式解析可選類型。如果你需要在變量的生命周期中判斷是否是nil的話,請使用普通可選類型。
10.錯誤處理
func canThrowAnerror() throws{
//這個函數(shù)可能拋出錯誤
}
一個函數(shù)可以通過在聲明中添加throws關(guān)鍵詞來拋出錯誤消息。當(dāng)你的函數(shù)能拋出錯誤消息時, 你應(yīng)該在表達式中前置try關(guān)鍵詞。
do{
try canThrowAnerror() throws{
//沒有錯誤拋出
}
//有錯誤拋出
}
11.基本運算符
賦值運算符
=算術(shù)運算符
+,-,*,/
加法運算符也可用作String的拼接:"hello,"+"world"求余運算符 a % b
-
一元負號運算符:
let three = -3 //three 等于 -3 let a = -three //a 等于 3 ,因為“--3” -
一元正號運算符:
let two = -2 //two 等于 -2 let a = +two //a 等于 -2 組合賦值運算符:
+=,-=比較運算符
==,!=,>,<,>=,<=
12.三目運算符:它的形式是:問題 ? 答案一 : 答案二
let a = 10
let b = 12
let c = true
let d = a + (c ? a : b)
13.空合運算符: a ?? b
對可選類型a進行空判斷,如果a包含一個值就進行解封,否則就返回一個默認值b。
表達式 a 必須是 Optional 類型。默認值 b 的類型必須要和 a 存儲值的類型保持一致。
a != nil ? a! : b //這是空合運算符的復(fù)雜寫法
當(dāng)可選類型 a 的值不為空時,進行強制解封(a!),訪問 a 中的值;反之返回默認值 b。
let c = "hehe"
var d : String?
let e = d ?? c
print(e) //打印出來為 "hehe"
14.區(qū)間運算符
*閉區(qū)間運算符 :a...b
包含a到b(包括a和b)
for index in 1...5{
print(index)
}
*半開區(qū)間運算符:a..<b
包含a到b但不包括b
15.邏輯運算符
- 非
!a - 與
a && b - 或
a || b