/*
* 控制流 (Control Flow)
* 使用 if 和 switch 来进行条件操作,使用for-in、for、while 和 do-while 来进行循环。
包裹条件和循环变量括号可以省略,但是语句体的大括号是必须的。
*
*/
let individualScores = [75,43,103,87,12]
var teamScore = 0
for score in individualScores {
if score > 50 {
teamScore += 3
} else {
teamScore += 1
}
}
print(teamScore) //11
/*
* 在if语句中,条件必须是一个布尔表达式,像 if score{...}是错误的
* 可以一起使用if和let来处理缺失的情况。有些变量的值是可选的。一个可选的值可能是一个具体的值或者是nil,表示缺失。
* 在类型后面加一个标记(?)问号,来标记这个变量是可选的
*/
var optionalString: String? = "Hello"
print(optionalString == nil)
var optionalName:String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)"
// 如果变量的可选值是nil,条件会判断为false,大括号中的代码会被跳过。不是nil,会将值赋给let后面的常量。
}
// 使用 ?? , 如果可选值缺失,缺失值将被替代
let nickName :String? = nil
let fullName:String = "John Appleseed"
let infomalGreeting = "Hi \(nickName ?? fullName)"
/*
* Switch支持任意类型的数据以及各种比较操作 –– 不仅仅是整数以及测试相等。
*
*/
let vegetable = "red pepper"
switch vegetable {
case "celery":
print("Add some raisins and make ants on a log.")
case "cucumber","watercress":
print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper"):
print("Is it a spicy \(x)?")
default:
print("Everying tastes good in soup.")
}
/*
* 运行switch中匹配到的句子之后,程序会推出switch语句,并不会继续向下运行,所以不需要哦在卖个橘子结尾写break。
* 可以使用for-in来遍历字典,需要两个变量来表示没个键值对。
***/
let interestingNumbers = [
"Prime": [2,3,5,7,11,13],
"Fibonacci":[1,1,2,3,5,8],
"Squre":[1,4,9,16,25],
]
var largest = 0
for (kind,numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
print(largest)
/*
* 使用while来重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾。
**/
var n = 2
while n < 100 {
n = n * 2
}
print(n)
var m = 2
repeat {
m = m * 2
} while m < 100
print(m)
/*
* 在循环中使用..< 来表示范围
*/
var firstForLoop = 0
for i in 0..<4 { // 如果想包含使用 ...
firstForLoop += i
}
print(firstForLoop)
Swift2.2 学习笔记(二) ___控制流
最新推荐文章于 2025-04-01 13:03:46 发布