Swift語法基礎(chǔ)

作為iOS開發(fā)者,只會OC肯定是不夠的,Swift作為蘋果強推的一門語言,一定要掌握。這篇博客整理了一些Swift語法基礎(chǔ)中的要點(本文書寫時的Swift版本為3.1)
</br>


一、標(biāo)識符的定義:

定義變量的格式:
var num : Int = 10
定義常量的格式:
let num : Int = 10
(通常把標(biāo)識符定義為常量,如果確定需要修改時再修改為變量,保證數(shù)據(jù)安全)

</br>

二、類型推導(dǎo)

當(dāng)一個標(biāo)識符在定義時有直接賦值,那么可以省略類型。編譯器會自動推導(dǎo)其類型

</br>

三、類型轉(zhuǎn)換

  1. 隱式轉(zhuǎn)換
    Swift中沒有隱式轉(zhuǎn)換
  2. 強制轉(zhuǎn)換
  • 在OC中,通過在變量之前用小括號括起類型的方式進行強制轉(zhuǎn)換
  • 在Swift中,通過在標(biāo)識符之前寫上類型,用小括號括住標(biāo)識符的方式轉(zhuǎn)換:
let a = 10.0
let b : Int = Int(a)

</br>

四、邏輯分支

  1. if語句
  • 條件語句的括號可以省略
  • 沒有非零即真的規(guī)則,必須是Bool類型
  1. 三目運算
  • 語句格式與OC中完全一致
  1. guard
  • 守衛(wèi)。根據(jù)判斷條件篩選,提高代碼可讀性
  1. switch
  • 不用寫break,如果希望穿透,則加上fallthrough
  • 可以判斷多個條件,在case后用逗號分隔
  • 可以判斷浮點型和字符串
  • 可以判斷區(qū)間:左閉右開區(qū)間min..<max,表示[min,max);左閉右閉區(qū)間min...max,表示[min,max]

</br>

五、循環(huán)

  1. for循環(huán)
  2. while循環(huán)
  3. repeat while循環(huán)

</br>

六、字符串

Swift中的字符串是一個結(jié)構(gòu)體,而不再是一個對象。效率更高

  1. 遍歷字符串:
for char in str.characters {
    print(char)
}
  1. 拼接字符串

(1)字符串與字符串拼接。
直接使用+運算即可

(2)快速拼接。
在字符串中通過(param)的方式拼接參數(shù):

let age = 18
let name = "xyz"
let height = 1.88
let info = "my name is \(name), my age is \(age), my height is \(height)"

打印結(jié)果my name is xyz, my age is 18, my height is 1.88
(3)格式化拼接。
以拼接時間為例

let min = 2
let sec = 7
let timeString = String(format : "%02d:%02d", arguments:[min, sec])

打印結(jié)果02:07

3.截取字符串
一般是先把String類型轉(zhuǎn)換為NSString類型,再調(diào)用NSString的方法進行截取

let urlString = "www.baidu.com"
let header = (urlString as NSString).substring(to: 3)
//結(jié)果為"www"
let middle = (urlString as NSString).substring(with: NSMakeRange(4, 5))
//結(jié)果為"baidu"
let subfix = (urlString as NSString).substring(from: 10)
//結(jié)果為"com"

4.判斷字符串是否為空

  • 與空字符串進行比較
if str == "" {
    //do something
}
  • 判斷count是否為0
if str.characters.count == 0 {
    //do something
}
  • 判斷isEmpty屬性是否為true
if str.isEmpty {
    //do something
}

</br>

七、數(shù)組

  1. 定義數(shù)組
  • 定義不可變數(shù)組:使用let修飾符定義
let array = ["Baidu","Alibaba","Tencent"]
  • 定義可變數(shù)組:使用var修飾符定義
var mutableArray = [String]()  
  1. 操作可變數(shù)組
mutableArray.append("163")
mutableArray.append("HuaWei")
mutableArray[0]
mutableArray[0] = "HuaWei"
mutableArray.remove(at: 0)
  1. 遍歷數(shù)組
  • 根據(jù)下標(biāo)遍歷
for i in 0..<array.count {
    print(array[i])
}
  • 快速遍歷數(shù)組中的元素
for name in array {
    print(name)
}
  • 遍歷數(shù)組的指定區(qū)間
for name in array[a..<b] {
    print(name)
}
  1. 合并數(shù)組
    相同類型的數(shù)組可以通過加法運算符直接合并
let resultArray = array1 + array2

</br>

八、字典

  1. 定義字典
  • 定義不可變字典:使用let修飾符定義
let dict : [String : Any] = ["name" : "xyz" , "age" : 36, "height" : 1.86]
  • 定義可變字典:使用var修飾符定義
var dictM = [String : Any]()
  1. 對可變字典的操作
dictM["name"] = "xyz"
dictM["age"] = 36
dictM["height"] = 1.86
dictM["name"]
dictM["height"] = 1.58
dictM.removeValue(forKey: "name")
  1. 遍歷字典
  • 遍歷鍵
for key in dictM.keys {
    print(key)
}
  • 遍歷值
for value in dictM.values {
    print(value)
}
  • 遍歷鍵值對
for (key, value) in dictM {
    print(key)
    print(value)
}
  1. 合并字典
    只能通過遍歷、往可變字典中追加的方式合并

</br>

九、元組

  1. 什么是元組?
    一種類似于數(shù)組或者字典的數(shù)據(jù)結(jié)構(gòu),可以用于定義一組數(shù)據(jù)。常用于作為方法的返回值
  2. 定義元組
  • 把元素用圓括號括起來,快速創(chuàng)建元組
let info1 = ("xyz",18,1.88)

通過點語法加下標(biāo)獲取元素

info1.0

</br>

  • 創(chuàng)建元組的同時給元組起別名。
let info2 = (name : "xyz", age : 18, height : 1.88)

獲取元素時可以使用別名來獲取元素

info2.name

</br>

  • 直接把元素的別名括起來作為元組的名稱。這樣的定義方式會直接給元素賦值,右側(cè)元組內(nèi)的元素會被分解為對應(yīng)的變量或常量
let (name, age , height) = ("xyz", 18, 1.88)

取元素時可以直接用別名取

name
  1. 元組的比較
    如果元組中的值都可以比較,那么元組就可以比較
    元組比較按照從左往右、逐值比較的方式進行,知道發(fā)現(xiàn)有兩個值不等為止。如果所有值都相等,那么兩個元組相等。
(1, "abc") < (2, "aaa")    // true, 1 < 2
(4, "apple") < (4, "bad")    //true, 4 == 4, apple < bad
("abc", 12) == ("abc", 12)    //true 完全相等

注意:由于Bool類型不可以進行比較,所以包含布爾類型的元組不可比較

</br>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,400評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,136評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,714評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,452評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,818評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,997評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,552評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,292評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,510評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,721評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,121評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,429評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,235評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,480評論 2 379

推薦閱讀更多精彩內(nèi)容