zoukankan      html  css  js  c++  java
  • 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

    使用.. 做一个范围

  • 相关阅读:
    Pills
    项链
    IIS7.5 关于ASP连接ACCESS数据库超时问题
    清明
    The New Beginning
    新的开始
    Mysql中文乱码以及导出为sql语句和Excel问题解决
    Spring学习笔记01. 入门知识,IoC/DI
    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PAT
    Django框架 python3.7+django2.2 报错:AttributeError: ‘str’ object has no attribute ‘decode’解决办法
  • 原文地址:https://www.cnblogs.com/mlgblog/p/Swift_Control_Flow.html
Copyright © 2011-2022 走看看