• Swift 流程控制


    1、if else 

    let age = 5
    if age<5 {
        print("age<5")
    }else if age ==5{
         print("age=5")
    }else{
         print("age>5")
    }

    注意:if 后面的小括号可以省略、条件后面的大括号不能省略 

    if 条件后面只能跟bool类型

    2、while

    var age = 5
    while age > 0 {
        print("num is (age)")
        age-=1
    }
    //输入结果5、4、3、2、1 输出5次
    var age = -1 ;
    repeat {
        print("age")
    }
        while age > 0

     repeat while 相当于c语言中的do while 

    这里不用age--  是因为从swift3开始,去除了自增(++)、自减(--)运算符

    3、for

    let name = ["1","2","3","4"]
    
    for i in 0..<3{
        print(name[i])
    }
    
    打印结果  1 2 3
    
    let name = ["1","2","3","4"]
    let range = 0...3
    for i in range {
        print(name[i])
    }
    
    打印结果  1 2 3 4
    
    let name = ["1","2","3","4"]
    let a = 1
    let b = 3
    for i in a...b {
        print(name[i])
    }
    
    打印结果   2 3 4
    
    for var i in 1...4{
        i += 5
        print(i)
    }
    
    
    打印结果 6 7 8 9 
    
    for _ in 1...3{
        print("a")
    }
    
    
    打印3次a

    a..<b   大于等于a 、小于b

    let name = ["1","2","3","4"]
    for a in name[1...2]{
        print(a)
    }
    
    打印结果 23 
    
    let name = ["1","2","3","4"]
    for a in name[...2]{
        print(a)
    }
    //打印 1 2 3
    let name = ["1","2","3","4"]
    for a in name[1...]{
        print(a)
    }
    ////打印 2 3 4
    
    let name = ["1","2","3","4"]
    for a in name[..<2]{
        print(a)
    }
    //打印1 2
    
    
    
    let range = 1...3
    print(range.contains(5))  false
    print(range.contains(3))   true
    print(range.contains(1))   true

     4、区间运算

    let range = 1...3
    let rangOne:ClosedRange<Int> = 1...3
    let rangTwo:Range<Int>=0..<6
    let rangeThree:PartialRangeThrough<Int> = ...5
    let range = "ab"..."cd"
    print(range.contains("bz")) //true
    print(range.contains("ff"))  // false
    
    字符串、字符也能使用区间运算、但不能用在for in 中
    
    let characterRange:ClosedRange<Character> = ""..."~"
    
    print(characterRange.contains("G")) //true
    ~囊括了所有可能用到的ASCII字符    

     5、带间隔的区间值

    let hour = 10
    let add = 2
    //代表从4开始 到10 不包含10 没次增加2 的数据
    for trank in stride(from: 4, to: hour, by: add){
        print(trank)
    }
    //输出 4 6 8

    6、switch

    var a = 10
    
    switch a {
    case 1:
        print("a=1")
    case 10:
        print("a=10")
    default :
        print("其他")
    }
    // case default 后面不能加{} 默认可以不写break、不会贯穿到后面去
    var a = 1
    switch a {
    case 1:
        print("1")
        fallthrough
    case 2:
        print("2")
    case 3:
        print("3")
    default:
    //    print("其他")
        break
    }
    //fallthrough 可以实现贯穿效果 输出 1 、2
    //switch 必须保证能处理所有的情况、如果不想做任何事情加一个break即可
    
    enum Answer { case right ,wrong }
    let an = Answer.wrong
    switch an{
    case .right:
        print("right")
    case Answer.wrong:
        print("wrong")
    }
    //这种情况定义一个枚举 、已经处理到了所有的情况、就不需要default了 因为已经知道了an的类型、所以可以省略Answer 直接 .right

    switch也支持Character、String 类型

    let sring = "tom"
    
    switch sring {
    case "tom":
        print("tom")
    default:
        break
    }
    
    let c:Character = "A"
    
    switch c {
    case "a","A": //等价于 case "a" : print("字母A") fallthrough case "A"
        print("字母A")
        
    default:
        break
    }

     区间匹配、元组匹配

    let age = 11
    
    switch age{
    case ..<12:
        print("小于12")
    case 12 :
        print("等于12")
    default:
        print("大于12")
    }
    
    let point = ( -21 ,0 )
    
    switch point {
    case (0,0):
        print("原点")
    case (_,0):
        print("x坐标")
    case (0,_):
        print("Y坐标")
    case (-1...1,-1...1):
        print("范围内")//  x:-1到1  y -1到1 的盒子
    default:
        print("不在范围内")
    }

    值绑定

    let p = (1,0)
    
    switch p {
    case (let x ,0):
        print("x(x)")
    case (0,let y):
        print("y(y)")
    default:
        print("其他")
    }
    //输出x1

    7、where

    let po = (1 , -1)
    switch po {
    case let (x,y) where x == y :
        print("x=y")
    case let ( x , y ) where x == -y :
        print("x=-y")
    default:
        print("其他")
    }
    //输出x=-y 
    var num = [10,20,-10,-20,-30]
    var sum = 0
    
    for n in num   where n > 0 {
        sum += n
    }
    print(sum)
    
    //输出30

    8、标签语句

    outer : for i in 1...4 {
        for k in 1...4 {
            if k==3 {
                continue outer
            }
            if i==3 {
                break outer
            }
            print("i:(i) k:(k)")
        }
    }
    //打印结果
    i:1 k:1
    i:1 k:2
    i:2 k:1
    i:2 k:2
  • 相关阅读:
    erlang调试技术之etop
    erlang进程与操作系统线程
    BFS算法入门--POJ3984
    Linux学习笔记(2)Linux学习注意事项
    Linux学习笔记(1)Linux虚拟机安装过程中的知识点及常用管理工具
    题解 UVA10587 【Mayor's posters】
    【BZOJ4590】自动刷题机
    【Usaco2006Mar】Milk Team Select产奶比赛
    【区间DP】释放囚犯
    ssm项目中KindEditor的图片上传插件,浏览器兼容性问题
  • 原文地址:https://www.cnblogs.com/ZhangShengjie/p/11239855.html
Copyright © 2020-2023  润新知