let number =10; switch number { case10,11,12: print("通过") case20: print("未授权") default: print("未知状态") } // 输出“通过”
switch 和 范围运算符
1 2 3 4 5 6 7 8 9 10
let number =10; switch number { case10...12: print("通过") case20: print("未授权") default: print("未知状态") } // 与上面的代码完全一致 输出“通过”
使用 switch 和 元组数据 和 用_忽略某个判断值,来判断某个点在下图什么位置
1 2 3 4 5 6 7 8 9 10 11 12 13
let point = (0, 0) switch point { case (0, 0): print("在原点") case (_, 0): print("在X轴") case (0, _): print("在Y轴") case (-2...2, -2...2): print("在蓝色矩形框内") default: print("在蓝色矩形框外") }
switch 的数据绑定,在匹配同时,可以将 switch 中的值绑定给一个常量或者变量
1 2 3 4 5 6 7 8 9
let point = (10, 5) switch point { case (let x, 0): print("在X轴,X坐标:\(x)") case (0, let y): print("在Y轴,Y坐标:\(y)") caselet (x, y): print("X坐标:\(x),Y坐标:\(y)") }
使用 switch 的数据绑定 和 where 判断条件成立,来判断某个点是否在下图紫线或绿线上
1 2 3 4 5 6 7 8 9
let point = (0, 0) switch point { caselet (x, y) where x == y: print("在绿线上") caselet (x, y) wehre x ==-y print("在紫线上") default: print("在其他位置") }
fallthrough
执行完当前 case 后接着执行下一个 case 或 default,等于PHP不写 break 的效果
1 2 3 4 5 6 7 8 9 10 11
let num =10; switch num { case10: print("10") fallthrough case20: print("20") default: print("num 是其他值") } // 会输出 10 20
函数语法
定义函数
func 函数名(形参名) -> 返回类型
1 2 3
funcsum(num1, num2) -> Int { return num1 + num2 }
定义无返回值函数
func 函数名(形参名) { 函数体 }
func 函数名(形参名) -> Void { 函数体 }
func 函数名(形参名) -> () { 函数体 }
返回元组的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
funcgetPoint() -> (Int, Int) { return (10, 10) }
funcgetPepole(id: Int) -> (name: String, age: Int) { if id ==1 { return ("Zhang San", 20) } else id id ==2 { return ("Li Si", 21) }
return ("Unknown", 0) }
var pepole = getPepole(id: 1) print(pepole); // ("Zhang San", 20)