您的位置:首页 > 移动开发 > Swift

Swift-控制流

2016-05-05 10:54 399 查看
在 Swift 中,包裹条件和循环变量的括号可以省略,举个栗子:

let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores { // 循环语句的小括号可以省略
if score > 50 { // 条件语句的小括号可以省略
teamScore += 3
} else {
teamScore += 1
}
} // 循环语句体的大括号不能省略
print(teamScore)


在 if 语句中,条件必须是一个布尔表达式。什么意思呢?比如以前我们常用 if (a) 来代替 if (a != 0),但是在 Swift 里 if (a) 就会报错,必须写成 if (a != 0)

在 Swift 中有可选值。可选值可能是一个具体的值,也有可能是 nil。在类型后面加一个问号来标记这个变量的值是可选的,比如:

var optionalString: String? = "Hello"
print(optionalString == nil) // 输出结果为 false


可以用 if 和 let 来处理可选值:

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


当 optionalName 不是 nil 时会将值赋给 name,当 optionalName 是 nil 时,条件会判断为 false,大括号中的代码会被跳过。

但是为什么当 optionalName 是 nil 时条件会判断为 false 呢?我想是因为 Swift 中不能直接用 nil 赋值:



这样写可以:

let a : Int? = nil


另一种处理可选值的办法是用 ?? 操作符来提供一个默认值。当可选值缺失时用默认值来代替:

let nickName: String? = nil
let fullName = "John"
let informalGreeting = "Hello \(nickName ?? fullName)" // 输出结果为 Hello John
当 nickName 为 nil 时,就会使用默认值 fullName。

switch 是 Swift 中的一大亮点。在 Swift 里 switch 语句支持任意类型的数据以及各种比较操作!

let name = "some object"
switch name {
case "lala":
print("111111")
case "okok", "123":
print("222222")
case let x where x.hasSuffix("object"):
print("Is it \(x)?")
default:
print("333333")
}
最终输出结果为 Is it some object?

注意 let x where x.hasSuffix("object") 一句的用法,非常的灵活。感觉有点像 sql 语句。

在 Swift 中每个 case 后都不用写大括号,而且某个 case 匹配成功的话就不会继续往下执行,所以也不需要写 break。

可以用 for-in 来遍历字典,用两个变量来表示每个键值对(如下面的 kind 和 numbers)。别忘了字典是无序的~

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 // 记录最大的数值
var largestKind = String() // 记录最大数的类型
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
largestKind = kind
}
} }
print(largest, largestKind) // 输出结果为 25 Square
现在我们有一个字典,字典里有三种不同类型的数,我们要找出其中最大的数,以及这个数的类型。最后我们找到最大的数是 25,它是一个平方数。

while 和其它语言一样,在 Swift 中有 repeat while,它和其它语言中的 do while 是一样的,保证至少能执行一次循环。

var n = 2
while n < 100 {
n = n * 2
}
print(n)

var m = 2
repeat {
m = m * 2
} while m < 100
print(m)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息