Swift学习记录(二)

来源:互联网 发布:内链优化 编辑:程序博客网 时间:2024/05/29 08:56

该记录采用的是Swift 3.0版本,Xcode8.2.1,配合某机构教学视频。


四、for循环

// 一般写法for var i = 0; i < 10; i++ {    print(i)}// 遍历 0 ~ 9for i in 0..<10 {    print(i)}// 遍历 0 ~ 10for i in 0...10 {    print(i)}// 表示不关心索引值for _ in 0...10 {    print("hello")}
  • 小结
    • Swift 中使用 in 关键字标示循环的范围
    • 0..<10 表示从0到9
    • 0...10 表示从0到10
    • 注意之间不能出现空格
    • 如果不关心循环本身的索引,可以使用 _ 忽略

五、switch

Swift中switch的基本用法和OC相类似,

switch(需要匹配的值) case 匹配的值: 需要执行的语句 break;

  • 不同之处有
    • OC判断条件只能是整形。Swift除了整形还可以是对象类型
    • OC可以穿透。当满足条件时,OC会实现接下去所有的代码,直到遇到break为止。Swift则不会穿透,只会执行满足条件的代码块(即Swift可以不写break,OC不可以不写)
    • OC可以不写default,且位置可以随意摆放。Swift一定要写default,且位置只能在最后
    • OCcase中定义变量需要加大括号, 否则作用域混乱。Swift不用加大括号
    • OCcase只能判断一个条件。Swiftcase可以判断多个条件

此外在Swiftcase的可以配合区间和元组

// 区间var num = 10;switch num{    case 1...9:        print("个位数")    case 10...99:        print("十位数")    default:        print("其它数")}// 元组var point = (10, 15)switch point{    case (0, 0):        print("坐标在原点")    case (1...10, 10...20): // 可以在元祖中再加上区间        print("坐标的X和Y在1~10之间")    case (_, 0): // X可以是任意数        print("坐标的X在X轴上")    default:        print("Other")}

值绑定

var point = (1, 10)switch point{case (var x, 10): // 会将point中X的值赋值给X    print("x= \(x)")case (var x, var y): // 会将point中XY的值赋值给XY    print("x= \(x) y= \(y)")//case var(x, y)://    print("x= \(x) y= \(y)")default:    print("Other")}

根据条件绑定

var point = (100, 10)switch point{    // 只有where后面的条件表达式为真才赋值并执行case后的语句    case var(x, y) where x > y:         print("x= \(x) y= \(y)")    default:        print("Other")}

六、while循环

// 1.while循环// 1> while后面的()可以省略 2>没有非0(nil)即真var a = 10while a > 0 {    a -= 1    print(a)}// 2.do while循环// 1> 类型while循环的差别 2>do需要换成repeatrepeat {    a += 1    print(a)} while a < 10
0 0