• A swift Tour(2) Control Flow


    Control Flow

    用 if 和 switch 来做条件语句,并且用for-in,for,while,和do-while做循环,条件和循环的括号是可以不写的,但是body外面的括号是必须写的

    1 let individualScores = [75,43,103,87,12]
    2 var teamScore = 0
    3 for score in individualScores{
    4     if score > 50{
    5         temScore +=3
    6     } else {
    7         tempScore +=1
    8     }
    9 }
    teamScore

    在 if 语句中,条件必须是一个boolean 表达式,意思就是这个代码如果是 if socre { ... }则是错误的,不能够隐式和0比较

    可以使用 if 和 let 来锁定变量的值,在变量声明类型的后面加上问号 ? 标记该变量是可选择的

    var optionalString: String?="Hello"
    optionalString == nil 
    var optionaLName: String?="John Appleseed"
    var greeting = "hello!"
    if let name = optionlName {
       greeting = "Hello, (name)"
    }

    设置optionalName 为nil 看看是什么结果?

    如果这个optional value为nil,则这个条件是 false 并且这个代码节点会被跳过,在其他情况下,这个optional value赋值给 let 常量之后,这使得在if结构中的代码可以执行

    switch 支持任何类型的数据和各种各样的操作,他们并不局限于integer类型和检测相等,如下:

    let vegetable = "red pepper"
    switch vegetable {
        case "celery":
            let vegetableComment = "add some raisins and make ants               on a log."  
        case "cucumber","watercress":
            let vegetableComment ="That would make a good tea sandwich."
         case let x where x.hasSuffix("pepper"):
            let vegetableComment ="Is it a spicy (x)?"
         default:
            let vegetableComment = "Everything tastes good in soup."    
    }

    执行条件相匹配的结构块中的代码后,程序会退出switch语句,不会执行下一个case

    你使用for-in语句遍历字典中的项目,给他们提供一个键值:

    let interestingNumbers = [
    
        "Prime":[2,3,5,7,11,13]
    
        "Fibonacci": [1,1,2,3,5,8]
    
        "Square": [1,4,9,16,25]
    
    ]
    
    var largest = 0
    for (kind, numbers) in interestingNumbers{
       for number in numbers{
          if(number > largest)
          {
              largest = number
          }
       }
    }
    largest

    用while来循环代码块,直到条件的变化,一个循环的条件可以在最后替换,从而确定少执行一次:

    var n = 2
    while n < 100{
        n = n*2
    }
    n
    
    var m = 2
    do {
      m = m*2
    }while m <100
    m

    你也可以用..来做一个范围的集合,通过写一个显式的初始化索引,条件和增量,来判断,下面两个都是:

    var firstForLoop = 0
    for i in 0..3{
       firstForLoop += i
    }
    firstForLoop
    
    var secondForLoop = 0
    for var i = 0; i<3; i++{
       secondForLoop += i
    }
    secondForLoop

    使用.. 做一个范围

  • 相关阅读:
    注解
    idea 快速生成返回值快捷方式
    异常处理
    finally 关键字
    博客园美化
    winform中webBrowser模拟网页操作中遇到的问题
    使用NPOI 2.1.1读取EXCEL2003/2007返回DataTable
    使用事务和SqlBulkCopy批量插入数据
    Java String比较
    Java 实例级别的锁和类级别的锁
  • 原文地址:https://www.cnblogs.com/mlgblog/p/Swift_Control_Flow.html
Copyright © 2020-2023  润新知