swift學(xué)習(xí)-switch躬窜,函數(shù)-12/23

昨天確實(shí)很忙浇垦,沒來得及更新荣挨,補(bǔ)到今天了男韧。
書看到120頁了垦沉,越發(fā)覺得swift是一門不錯(cuò)的語言煌抒。今天抽空翻了翻swift的論壇厕倍,感覺要學(xué)的東西還有好多寡壮,一點(diǎn)一點(diǎn)進(jìn)步吧。
工作上一個(gè)挺惡心的任務(wù)快完成了况既,算是一個(gè)好消息。
筆記如下:
1 switch語句,與c和java不同棒仍,在swift中悲靴,當(dāng)匹配的case執(zhí)行完畢后莫其,程序會(huì)終止switch語句癞尚,而不會(huì)繼續(xù)執(zhí)行下一個(gè)case塊乱陡。無需顯示指定break浇揩。
例如:

let c: Character = "e"

switch c {
case "a", "e", "i", "o", "u" :
    print("\(c) is a vowel")
case "b", "c":
    print("\(c) is a consonant")
default:
    print("\(c) is not a vowel or a consonant")
}

每一個(gè)case都必須包含至少一條語句

case “A”:
case “B’: //這樣是錯(cuò)誤的

let i: Int = 5

switch i {
case 1...3:
    print("\(i) in [1, 3]")
case 4...6:
    print("\(i) in [4, 6]")
default:
    print("\(i) in [7, 100]")
}

let somePoint = (1, 2)

switch somePoint {
case (0, 0):
    print("(0, 0) is at the origin")
case (_, 0):  // _ 表示任意
    print("(\(somePoint.0), 0 is on the x-axis")
case (-2...2, -2...2):
    print("(\(somePoint.0), \(somePoint.1)) is inside the box")
default:
    print("(\(somePoint.0), \(somePoint.1)) is outside the box")
}

不像c語言憨颠,swift允許多個(gè)case匹配同一個(gè)值。如果存在多個(gè)匹配爽彤,那么只會(huì)執(zhí)行第一個(gè)匹配,其余的case塊會(huì)被忽略适篙。

let anotherPoint = (0, 2)

switch anotherPoint {
case(let x, 0): //值綁定
    print("on the x-axis with an x value of \(x)")
case(0, let y):
    print("on the y-axis with an y value of \(y)")
case(let x, let y):
    print("(\(x), \(y))")
}

case塊還可以使用where語句來增加額外的條件

let yetAnotherPoint = (1, -1)

switch yetAnotherPoint {
case let(x, y) where x == y:
    print("x == y")
case let(x, y) where x == -y:
    print("x == -y")
case let(x, y):
    print("(\(x), \(y)")
}

2 函數(shù),函數(shù)的語法和python不太相同匙瘪,同時(shí)參數(shù)的傳入傳出也有特殊要求铆铆。
例如:

func testFunc() -> (first : Int, second : Int) {
    return (1, 2) //(second: 1, first: 2) or (first: 1, second: 2) or (1, second: 2) or (1, first: 2)都是對(duì)的
}

let funcRes = testFunc()

func testFunc2(first first: Int, second: Int = 2) {
    print("first is \(first), second is \(second)")
}

testFunc2(first: 1, second: 2)//testFunc2(second: 1, first: 2)丹喻, or testFunc2(first: 1, second:2 )都不對(duì)
testFunc2(first: 1) //默認(rèn)參數(shù),類似c++
//指定外部參數(shù)名的方式翁都,如果是第一個(gè)參數(shù)碍论,寫兩遍柄慰,從第二個(gè)參數(shù)開始鳍悠,默認(rèn)就是外部參數(shù)
//func testFunc2(first first: Int, second: Int) …

函數(shù)內(nèi)部坐搔,外部參數(shù):
內(nèi)部參數(shù):只能在函數(shù)內(nèi)部用
外部參數(shù):外部調(diào)用時(shí)指定參數(shù)名藏研,指定外部參數(shù)名后概行,調(diào)用時(shí)必須指定參數(shù)名蠢挡。
新版swift中,從第二個(gè)參數(shù)開始业踏,默認(rèn)為外部參數(shù),并且必須指定勤家。
注:swift的參數(shù)傳入順序必須和定義時(shí)完全一致腹尖。
可變參數(shù)

func findMax<T: Comparable>(numbers: T...) -> T {
    var max = numbers[0]

    for number in numbers {
        if (max < number) {
            max = number
        }
    }

    return max;
}

let max = findMax(1, 2, 3, 2, 7, 3, 1)

print(max)

注意:函數(shù)參數(shù)默認(rèn)是常量伐脖,可以使用var聲明來修改為變量
in-out,通過in-out修飾的參數(shù)讼庇,可以被改變断凶,并在離開函數(shù)時(shí)依然有效巫俺,類似c++的引用认烁。
例如:

func mySwap<T>(inout left: T, inout right: T) {
    (left, right) = (right, left)
}

var left = 2, right = 3

mySwap(&left, right: &right)
print(left, right)

北京的霧霾好像快散了介汹。
再艱難的險(xiǎn)阻也終抵擋不住夢(mèng)想前進(jìn)的步伐。
希望總是生于最絕望的時(shí)刻嘹承。
有這么好的起點(diǎn)窗价,確實(shí)沒有任何借口了叹卷。
前進(jìn)吧撼港,帶著最后的倔強(qiáng)骤竹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帝牡,一起剝皮案震驚了整個(gè)濱河市蒙揣,隨后出現(xiàn)的幾起案子靶溜,更是在濱河造成了極大的恐慌懒震,老刑警劉巖罩息,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件个扰,死亡現(xiàn)場離奇詭異,居然都是意外死亡递宅,警方通過查閱死者的電腦和手機(jī)娘香,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茅主,“玉大人,你說我怎么就攤上這事诀姚。” “怎么了赫段?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵呀打,是天一觀的道長糯笙。 經(jīng)常有香客問我贬丛,道長,這世上最難降的妖魔是什么给涕? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮够庙,結(jié)果婚禮上恭应,老公的妹妹穿的比我還像新娘。我一直安慰自己耘眨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布剔难。 她就那樣靜靜地躺著,像睡著了一般偶宫。 火紅的嫁衣襯著肌膚如雪非迹。 梳的紋絲不亂的頭發(fā)上读宙,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天彻秆,我揣著相機(jī)與錄音结闸,去河邊找鬼。 笑死桦锄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔫耽。 我是一名探鬼主播留夜,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼图甜,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼碍粥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嚼摩,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枕面,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缚去,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年易结,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搞动。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖滋尉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狮惜,我是刑警寧澤高诺,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布碾篡,位于F島的核電站虱而,受9級(jí)特大地震影響开泽,放射性物質(zhì)發(fā)生泄漏牡拇。R本人自食惡果不足惜穆律,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一惠呼、第九天 我趴在偏房一處隱蔽的房頂上張望峦耘。 院中可真熱鬧剔蹋,春花似錦辅髓、人聲如沸泣崩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凯沪。三九已至买优,卻和暖如春著洼,著一層夾襖步出監(jiān)牢的瞬間而叼,已是汗流浹背身笤。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工葵陵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留液荸,地道東北人脱篙。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓娇钱,卻偏偏與公主長得像绊困,于是被迫代替她去往敵國和親文搂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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