zoukankan      html  css  js  c++  java
  • Swift中文教程(三)--流程控制

      Swift用if和switch编写条件控制语句,用for-in,for,while和do-while编写循环。条件控制语句和循环语句中,小括号是可选的,但花括号包住这个循环体是必须的:

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

      

      If语句

      在if语句中,条件必须是布尔值,也就是说,if score { ... }这个条件句是错误的,不是一个隐式地与0比较的条件。

      你可以结合if和let来防止这种值的丢失状况。这些值意味着可选,这种可选值要么包含一个具体的值要么包含一个nil(空)来指示它的值是不存在的。在值的类型后面加上?号来表示它为可选即可:

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

    练习:

    将 optionalName 赋值为 nil 。会发生什么?添加一个 else 条件句在 optionalName 为 nil 时设置一个不同的值试试。

      一旦可选值为nil,条件为false时,花括号里的代码块将被跳过,否则,可选值将是未封装的并赋值给一个常量,这会让未封装的值在代码块作用域中可见。

      

      Switch语句

      Switch语句支持任何数据类型而且支持多种比较,不限于整型或相等测试:

     1 let vegetable = "red pepper"
     2 switch vegetable {
     3 case "celery":
     4     let vegetableComment = "Add some raisins and make ants on a log."
     5 case "cucumber", "watercress":
     6     let vegetableComment = "That would make a good tea sandwich."
     7 case let x where x.hasSuffix("pepper"):
     8     let vegetableComment = "Is it a spicy (x)?"
     9 default:
    10     let vegetableComment = "Everything tastes good in soup."
    11 }

    练习:

    移除default语句,看看会报什么错?

      执行满足条件的case语句后,程序自动跳出,所以,无需给每个case语句加上break。

      

      For-In语句

      使用for-in循环在字典中遍历时,提供一对名字来使用字典中的每一个名值对(如下例的number--numbers):

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

    练习:

    在上例中,添加一个变量来跟踪哪一个number是最大的,即最大的值是?

      

      

      While语句

      使用while语句来重复执行一个代码块直到条件改变。条件可以置于句末以便代码至少执行一次:

     1 var n = 2
     2 while n < 100 {
     3     n = n * 2
     4 }
     5 n
     6  
     7 var m = 2
     8 do {
     9     m = m * 2
    10 } while m < 100
    11 m

      For语句

      for循环中可以使用索引值,利用..(两个点)或者明确声明一个初始值,条件句或增量来限制索引的范围,下面的两个循环意思一样:

     1 var firstForLoop = 0
     2 for i in 0..3 {
     3     firstForLoop += i
     4 }
     5 firstForLoop
     6  
     7 var secondForLoop = 0
     8 for var i = 0; i < 3; ++i {
     9     secondForLoop += 1
    10 }
    11 secondForLoop

      使用 ..(两个点)限制索引的范围并忽略最高值,而用 ...(三个点) 构造的范围则包含两个值。

    谢谢,Swifter-QQ群:362232993,同好者进~ 

    github地址:https://github.com/Joejo/Swift-lesson-for-chinese

  • 相关阅读:
    T4 (Text Template Transformation Toolkit)
    GUI Design Studio
    51劳有所获 54务实青年
    [书目20110502]把时间当作朋友
    Rdlc子报表的动态添加
    [转]更新Android SDK到3.0版本时,遇到Failed to rename directory E:\android\tools to E:\android\temp\ToolPackage.old01问题
    JSON
    javascript 特征侦测技术
    IE的setAttribute bug
    将"类数组对象"转换成数组对象
  • 原文地址:https://www.cnblogs.com/joejs/p/3766318.html
Copyright © 2011-2022 走看看