Swift:函數(shù)使鹅、枚舉與可選項(xiàng)

目錄
一揪阶,基礎(chǔ)語法
二,流程控制
三患朱,函數(shù)
四鲁僚,枚舉
五,枚舉的內(nèi)存布局
六裁厅,可選項(xiàng)

一冰沙,基礎(chǔ)語法

1,常量和變量
  • let定義常量执虹,用var定義變量
  • 常量只能賦值一次拓挥,變量可以賦值多次
  • 不能使用未初始化的常量和變量
  • 在定義常量和變量時(shí),如果有初始化就不需要聲明類型袋励,否則就需要聲明
2撞叽,常見數(shù)據(jù)類型
  • 在32位平臺(tái),Int等價(jià)于Int32插龄;在64位平臺(tái),Int等價(jià)于Int64
  • Float的精度只有6位科展,Double的精度至少15位
3均牢,元組
  • 元素個(gè)數(shù)必須大于1個(gè)
  • 有元素名稱就用名稱訪問,否則就用下標(biāo)訪問
  • _”表示忽略該參數(shù)
4才睹,typealias

二徘跪,流程控制

1甘邀,if-else
2,while
  • repeat-while相當(dāng)于C語言中的do-while
  • Swift3開始垮庐,去除了自增(++)松邪、自減(--)運(yùn)算符
3,for
  • 閉區(qū)間運(yùn)算符
  • 半開區(qū)間運(yùn)算符
  • 單側(cè)區(qū)間運(yùn)算符
  • 間隔區(qū)間值
  • where
  • outer
4哨查,switch
  • 基本使用

1>默認(rèn)可以不寫break逗抑,不會(huì)貫穿到后面的條件
2>使用fallthrough可以實(shí)現(xiàn)貫穿的效果
3>如果已經(jīng)處理所有的情況,可以不寫default

  • 復(fù)合條件
  • 元組匹配
  • 區(qū)間匹配
  • 值綁定
  • where

三寒亥,函數(shù)

1邮府,基本使用
2,參數(shù)使用
  • 參數(shù)標(biāo)簽
  • 默認(rèn)參數(shù)值
  • 可變參數(shù)
  • 輸入輸出參數(shù)

1>用inout定義一個(gè)輸入輸出參數(shù)溉奕,可以在函數(shù)內(nèi)部修改外部實(shí)參的值
2>可變參數(shù)不能標(biāo)記為inout
3>inout參數(shù)不能有默認(rèn)值
4>inout參數(shù)不能傳入常量
5>inout參數(shù)的本質(zhì)是地址傳遞

3褂傀,函數(shù)重載
  • 函數(shù)名相同
  • 參數(shù)個(gè)數(shù)不同或者參數(shù)類型不同或者參數(shù)標(biāo)簽不同
  • 返回值與函數(shù)重載無關(guān)
4,內(nèi)聯(lián)函數(shù)
  • 將函數(shù)調(diào)用展開成函數(shù)體
  • XcodeRelease模式下默認(rèn)會(huì)開啟編譯器優(yōu)化加勤,編譯器會(huì)自動(dòng)將某些函數(shù)變成內(nèi)聯(lián)函數(shù)
  • 不會(huì)被自動(dòng)內(nèi)聯(lián)的函數(shù):函數(shù)體比較長仙辟、包含遞歸調(diào)用、包含動(dòng)態(tài)派發(fā)
  • 由于編譯器會(huì)自動(dòng)優(yōu)化鳄梅,所以我們沒必要使用@inline
5叠国,函數(shù)類型
  • 類型格式
  • 作為參數(shù)
  • 作為返回值
6,嵌套函數(shù)
7卫枝,文檔注釋

四煎饼,枚舉

1,基本使用
2校赤,原始值
  • 顯式原始值
  • 隱式原始值
3吆玖,關(guān)聯(lián)值
4,遞歸枚舉
5马篮,定義方法

五沾乘,枚舉的內(nèi)存布局

查看內(nèi)存的工具

1,MemoryLayout
  • stride:分配的內(nèi)存大小
  • size:使用的內(nèi)存大小
  • alignment:內(nèi)存對齊參數(shù)
2浑测,無原始值無關(guān)聯(lián)值
  • 每個(gè)case都有一個(gè)序號(從0開始)翅阵,序號也稱為成員值
  • 成員值存儲(chǔ)在枚舉變量中,在結(jié)合switch使用時(shí)迁央,需要區(qū)分枚舉變量屬于哪一個(gè)case
  • 由于枚舉變量只存儲(chǔ)成員值掷匠,所以分配1個(gè)字節(jié)就足夠了
3,有原始值
  • 原始值是固定的岖圈,也是所有枚舉變量公共的讹语,所以它不存儲(chǔ)在枚舉變量中
  • 由于枚舉變量還是只存儲(chǔ)成員值,所以也只分配1個(gè)字節(jié)
4蜂科,有關(guān)聯(lián)值
  • 關(guān)聯(lián)值是動(dòng)態(tài)的顽决,也是每個(gè)枚舉變量獨(dú)有的短条,所以它存儲(chǔ)在枚舉變量中
  • 枚舉變量的內(nèi)存等于關(guān)聯(lián)值和成員值的內(nèi)存之和,而關(guān)聯(lián)值取case中占用內(nèi)存最大的一個(gè)
  • 25(使用的內(nèi)存)= 3 * 8(關(guān)聯(lián)值)+ 1(成員值)才菠,由于內(nèi)存對齊茸时,所以分配了32個(gè)字節(jié)
5,一個(gè)case
  • 只有一個(gè)case赋访,在結(jié)合switch使用時(shí)無需區(qū)分可都,所以枚舉變量不用存儲(chǔ)成員值
  • 由于枚舉變量不用存儲(chǔ)任何數(shù)據(jù),所以它不占用內(nèi)存空間

六进每,可選項(xiàng)

1汹粤,基本介紹
  • 可選項(xiàng)允許將值設(shè)置為nil
  • 可選項(xiàng)是對其他類型的一層包裝,可以將它理解為一個(gè)盒子
  • 如果不為nil田晚,里面裝的是其他類型的數(shù)據(jù)嘱兼;如果為nil,它就是一個(gè)空盒子
2贤徒,強(qiáng)制解包
  • 強(qiáng)制解包就是從盒子中取出數(shù)據(jù)
  • 不能對值為nil的可選項(xiàng)進(jìn)行強(qiáng)制解包
3芹壕,隱式解包
4,可選項(xiàng)綁定
  • 可選項(xiàng)綁定用來判斷可選項(xiàng)是否為nil
  • 如果不為nil就返回true并自動(dòng)解包接奈,否則就返回false
5踢涌,guard
  • 與可選項(xiàng)綁定結(jié)合使用
  • 如果可選項(xiàng)不為nil就自動(dòng)解包并跳過大括號,否則就執(zhí)行大括號里面的代碼
6序宦,空合并運(yùn)算符
  • a ?? b睁壁,a必須是可選項(xiàng),b可以不是
  • ab的類型必須相同
  • 如果a不為nil就返回a互捌,否則返回b
  • 如果b不是可選項(xiàng)潘明,返回a時(shí)會(huì)自動(dòng)解包
7,多重可選項(xiàng)
  • 有值的情況
  • 無值的情況
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秕噪,一起剝皮案震驚了整個(gè)濱河市钳降,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腌巾,老刑警劉巖遂填,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異澈蝙,居然都是意外死亡吓坚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門灯荧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來礁击,“玉大人,你說我怎么就攤上這事】退埃” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵撕贞,是天一觀的道長更耻。 經(jīng)常有香客問我,道長捏膨,這世上最難降的妖魔是什么秧均? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮号涯,結(jié)果婚禮上目胡,老公的妹妹穿的比我還像新娘。我一直安慰自己链快,他們只是感情好誉己,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著域蜗,像睡著了一般巨双。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霉祸,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天筑累,我揣著相機(jī)與錄音,去河邊找鬼丝蹭。 笑死慢宗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奔穿。 我是一名探鬼主播镜沽,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巫橄!你這毒婦竟也來了淘邻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤湘换,失蹤者是張志新(化名)和其女友劉穎宾舅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彩倚,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筹我,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帆离。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔬蕊。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哥谷,靈堂內(nèi)的尸體忽然破棺而出岸夯,到底是詐尸還是另有隱情麻献,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布猜扮,位于F島的核電站勉吻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏旅赢。R本人自食惡果不足惜齿桃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望煮盼。 院中可真熱鬧短纵,春花似錦、人聲如沸僵控。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喉祭。三九已至养渴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泛烙,已是汗流浹背理卑。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔽氨,地道東北人藐唠。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像鹉究,于是被迫代替她去往敵國和親宇立。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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