Swift 學習筆記

assert(條件谓娃,斷言信息)

斷言被觸發(fā)時則應(yīng)用終止

空合運算符(a??b)對可選變量a進行空判斷,如果a包含一個值就進行解封蜒滩,否則返回一個默認值b滨达。

表達式a必須是一個可選變量

b的類型要和a存儲值的類型保持一致

相當于a!=nil?a!:b

區(qū)間運算符

for index in 1...5{

print("\(index) * 5 = \(index * 5)")

}



字符串變量可通過isEmpty屬性來判斷該字符串是否為空

常量字符串不可以被修改

String類型是值類型,任何情況下俯艰,進行操作時都會對已有字符串值創(chuàng)建新副本

可遍歷字符串中的charaters屬性來獲取每一個字符的值

let catCharacters:[Character] = ["C","a","t","!","?"]

let catString = String(catCharacters)

print(catString)

字符串插值即可以是一個整形的變量a作為\(a)被插入到一個字符串常量中捡遍。



Unicode是一個國際標準,用于文本的編碼和表示竹握。

字符串字面量的特殊字符: \"雙引號

可若站的字符群集作為Character值來連接或者改變字符串是画株,并不一定會更改字符串的字符數(shù)量

可擴展的字符群集可以組成一個或者多個Unicode標量,這意味著不同的字符以及相同字符的不同表示方式可能學要不同數(shù)量的內(nèi)存空間來存儲,所以Swift中的字符在一個字符串中并不一定占用相同的內(nèi)存空間數(shù)

每一個String的值都有一個關(guān)聯(lián)的索引類型谓传,String.index蜈项,它對應(yīng)著字符串中的每一個Character的位置

endIndex對應(yīng)的是獲取String最后一個Character的后一個位置的索引

let greeting = "Guten Tag!"

greeting[greeting.startIndex]//G

greeting[greeting.index(before:greeting.endIndex)] ?//!//index(before:)

greeting[greeting.index(after:greeting.startIndex)] //u//index(after)

let index = greeting.index(greeting.startIndex,offsetBy:7)//index(_:offsetBy)

greeting[index] ? //a

使用characters屬性的indices屬性會創(chuàng)建一個包含全部索引的范圍

for index in greeting.characters.indices{

print("\(greeting[index])",terminator:"")

}

插入和刪除

insert(contentsOf: ? ?,at: ? ? ? )

remove(at: ? ?)

let range = welcome.index(welcome.endIndex,offsetBy:-6)..<weicome.endIndex

welcome.removeSubrange(range)

可用hasPrefix()來計算包含前綴的字符串數(shù)

可用hasSuffix()來計算包含后綴的字符串數(shù)



創(chuàng)建一個帶默認值的數(shù)組:var threeDouble = Array(repeating:0.0,coutnt:3)

可通過加法運算符來組合兩種已存在的相同類型數(shù)組

創(chuàng)建一個空數(shù)組:var a = [Int]()

用數(shù)組字面量構(gòu)造數(shù)組

var shop:[String] = ["Eggs","Milk"]

可用布爾屬性isEmpty檢查count屬性是否為0

還可以利用下標一次改變一系列數(shù)據(jù)值:a[4...6] = [1,2]

可用insert(content, at: num)插在具體表項之前

remove(at:)移除數(shù)組中的某一項并返回這個被移除的數(shù)據(jù)項,移除最后一項用removeLast()


集合用來存儲相同類型并且沒有確定順序的值续挟,并且確保每個元素值出現(xiàn)一次

創(chuàng)建一個空集合:var letters = Set<Character>()

數(shù)組字面量創(chuàng)建集合

var favoriteGenres:Set<String> = ["Rock","Classical","Hip hop"]

Set類型不能從數(shù)組字面量中被單獨推斷出來紧卒,因此Set類型必須顯式聲明

可直接用insert和remove插入和刪除元素

可用contains方法檢查Set中是否包含一個特定的值

有多種創(chuàng)建不同集合的方法,可參看swift3.0第94頁


字典簡直類型一致時可以不必寫出字典的類型

字典添加新值可以使用一個恰當類型的鍵作為下標索引诗祸,并且分配恰當類型的新值

也可以使用下標語法來改變特定鍵對應(yīng)的值

可使用updateValue(_:forKey:)更新或者新添值跑芳,該函數(shù)還會返回一個可選值,用于檢查更新是否成功

if let oldValue = airports.updateValue("Dublin Airport",forKey:"DUB"){

print("the old value for DuB was (oldValue)")

}

removeValue(forKey:)方法可用來在字典中移除鍵值對直颅,并且返回被移除的值博个,在沒有值的情況下返回nil

鍵值對對應(yīng)著keys和values

為了以特定的順序遍歷字典的鍵或值,可以對字典的keys或values屬性進行sorted()方法



swift中的switch與C之類的區(qū)別在于际乘,當匹配的case分支中的代碼執(zhí)行完畢后坡倔,程序會終止switch語句,而不會繼續(xù)執(zhí)行下一個case分支脖含,如果想繼續(xù)執(zhí)行的話可以在末尾添加一個fallthrough

不像C語言里的switch語句罪塔,swift里面為了讓單個case同時匹配不同的元素時,需要將這兩個值組合成一個復(fù)合匹配养葵,并且用逗號分開

swift允許多個case匹配同一個值征堪,如果存在多個匹配。那么只會執(zhí)行第一個被匹配的case分支关拒。

case 分支可以使用where語句來判斷額外的條件

let a=(1,-1)

switch b{

case let (x,y) where x==y

print("(\(x),\(y)) is on the line x==y")

case let (x,y)where x==-y

print("(\(x),\(y)) is on the line x==-y")

}



要想改變參數(shù)的值佃蚜,需要在函數(shù)參數(shù)的類型前面加上inout,即使用

輸入輸出參數(shù)着绊,調(diào)用函數(shù)時需要傳入的是變量而不能是常量谐算,函數(shù)參數(shù)中寫的參數(shù)前面應(yīng)加上&


閉包是自包含的函數(shù)代碼塊,可以捕獲的存儲其所在上下文中任意常量和變量的引用

全局函數(shù)是一個有名字但不會捕獲任何值的閉包

嵌套函數(shù)是一個有名字病可以捕獲其封閉函數(shù)域內(nèi)值的閉包

閉包表達式是可以捕獲其上下文中變量或常量名的匿名閉包

閉包中可變參數(shù)應(yīng)放在參數(shù)列表的最后一位

嵌套函數(shù)中捕獲的外部參數(shù)并修改之后在調(diào)用完外圍函數(shù)之后仍然會一直保留

swift3.0第136頁如果你創(chuàng)建了另一個函數(shù)归露,則會有屬于其自己的心得變量

當一個閉包作為參數(shù)傳到一個函數(shù)中洲脂,但是這個閉包在函數(shù)返回時才被執(zhí)行

我們稱該閉包從函數(shù)中逃逸


當使用字符串作為枚舉類型的原始知識,每個枚舉成員的隱式原始值為該枚舉成員的名稱


結(jié)構(gòu)體和枚舉是值類型剧包,值類型被賦予一個變量恐锦,常量活著被傳遞給一個函數(shù)的時候,其值會被拷貝

當把一個結(jié)構(gòu)體的實例賦給另一個時疆液,只是單純的值拷貝一铅,改變另一個的結(jié)構(gòu)體成員時不會對原實例的

成員產(chǎn)生影響。


類時引用類型堕油,引用的是已存在的實例本身而不是其拷貝

判斷兩個常量或者變量是否引用同一個類實例 ===


存儲屬性:

如果創(chuàng)建了一個結(jié)構(gòu)體的實例并將其復(fù)制給一個常量潘飘,則無法修改

當值類型的實例被聲明為常量時肮之,它的所有屬性也是常量

而屬于飲用類型的類則不一樣,把一個引用類型的實例賦給一個常量后卜录,

仍然可以修改該實例的變量屬性

延遲存儲屬性必須聲明為變量局骤,因為屬性的初始值可能在實例構(gòu)造完成之后才會得到

而常量屬性在構(gòu)造完成之前必須要有初始值

計算屬性不直接存儲值,而是用getter和setter來間接獲取和設(shè)置其他屬性或變量的值

調(diào)用類型方法用類名加點

類型屬性是通過類型本身來訪問的暴凑,而不是用實例


如果你使用閉包來初始化屬性,請記住在閉包執(zhí)行時赘来,實例的其它部分都還沒有初始化现喳。這意味著你不能在閉包里訪問其它屬性,即使這些屬性有默認值犬辰。同樣嗦篱,你也不能使用隱式的self屬性,或者調(diào)用任何實例方法幌缝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末灸促,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涵卵,更是在濱河造成了極大的恐慌浴栽,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轿偎,死亡現(xiàn)場離奇詭異典鸡,居然都是意外死亡,警方通過查閱死者的電腦和手機坏晦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門萝玷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昆婿,你說我怎么就攤上這事球碉。” “怎么了仓蛆?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵睁冬,是天一觀的道長。 經(jīng)常有香客問我多律,道長痴突,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任狼荞,我火速辦了婚禮辽装,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘相味。我一直安慰自己拾积,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拓巧,像睡著了一般斯碌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肛度,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天傻唾,我揣著相機與錄音,去河邊找鬼承耿。 笑死冠骄,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的加袋。 我是一名探鬼主播凛辣,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼职烧!你這毒婦竟也來了扁誓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蚀之,失蹤者是張志新(化名)和其女友劉穎蝗敢,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恬总,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡前普,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了壹堰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拭卿。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贱纠,靈堂內(nèi)的尸體忽然破棺而出峻厚,到底是詐尸還是另有隱情,我是刑警寧澤谆焊,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布惠桃,位于F島的核電站,受9級特大地震影響辖试,放射性物質(zhì)發(fā)生泄漏辜王。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一罐孝、第九天 我趴在偏房一處隱蔽的房頂上張望呐馆。 院中可真熱鬧,春花似錦莲兢、人聲如沸汹来。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽收班。三九已至坟岔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摔桦,已是汗流浹背社付。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留邻耕,地道東北人瘦穆。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赊豌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绵咱,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

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