//---------------- 0.2 控制流程 ---------------
1.判断:
//条件是中的()是可选的,bady中的大括号是必须的
//在if语句中,条件*必须*是一个布尔表达式(Swift不会像OC那样默认与零比较) ? 是将值标记为可选
var optionalString:String? = "HELLO"
print(optionalString == nil)
2.if与let(var)连用可以判断值是否为*空* 同时赋值成功
var optionalName: String? = "nil"//判断这个值是否为空
var greeting = "Hello!"
if var name = optionalName {
name = "123"
greeting = "值不空,\(name)"
}else{
greeting = "值为空"
}
print(greeting)
3. ?? 判断前面值是否为空 不为空用前面的值 为空则使用后面的值
let nickName:String? = "123"
let fullName:String = "John Appleseed"
let informalGreeting = "Hi \(nickName ?? fullName)"
print(informalGreeting)
//switch语句可以判断String类型啦~~(判断的值必须已经确定 不能为空)
let vegetable:String = "nil"
switch vegetable {
case "cba":
print("switch语句可以判断String类型啦~~")
case "abc","ccc":
print("switch中case里的,是表示或的意思")
case let x where x.hasSuffix("pepperx")://这里的case where 组合是用来添加条件的(eg2)
print("Is it a spicy \(x)?")
default://有必要(匹配成功后,程序退出switch语句,执行不会继续到下一种情况)
print("switch语句可以判断String类型")
}
/*
// hasSuffix(string)返回一个布尔值表示字符串是否以指定的后缀结束。
// 如果一直返回true 如果不一致返回false
// hasPrefix(string)返回一个布尔值表示字符串是否以指定的前缀开始。
// 如果一直返回true 如果不一致返回false
//eg1:
var x = "aaa"
if x.hasSuffix("pepperx") {
print("ok")
}else{
print("no")
}
//eg2:找出1-100内能够整除5的数
//一般做法
for i in 1...100 {
if i % 5 == 0 {
print(i)
}
}
//case where做法
for case let i in 1...100 where i % 3 == 0 {
print(i)
}
**/
4.找出字典中最大的值
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
5.可以使用for- in通过提供一对用于每个键值对的名称来迭代字典和数组。 词典是一个无序的集合,所以它们的键和值以任意的顺序迭代
var largest = 0
for (_, numbers) in interestingNumbers {//用(_,value)来表示字典中的键值对
for number in numbers {
if number > largest {
largest = number
}
}
}
print(largest)
6.white语句:直到型循环
var n = 2
while n < 100 {
n *= 2
}
print(n)
7.反写white语句:确保了循环至少运行一次~
var m = 2
repeat {
m *= 2
} while m < 100
print(m)
8.可以..< (...) 将索引保留在循环中。使用..< 使省略了其上限值的范围内,并用...做既包括值的范围。
var total = 0
for i in 0..<4 {
total += i
}
print(total)