·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> AswiftTour(2)ControlFlow

AswiftTour(2)ControlFlow

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

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

使用.. 做一个范围