swift for循环_跟我学Swift 5.2逻辑分支与循环

if分支

  • 判断句可以不加()

  • 判断之后的执行语句必须用{}括起来。

  • 在判断句中必须有明确的 Bool 值(true 或者 false)。

  • 案例一

let a = 10

// 错误写法
//if a {
// print("a")
//}

// 正确写法
if a > 9 {
print(a)
}
  • 案例二

let score = 87

if score < 60 {
print("不及格")
} else if score <= 70 {
print("及格")
} else if score <= 80 {
print("良好")
} else if score <= 90 {
print("优秀")
} else {
print("完美")
}
  • 案例三

// 这个是可选类型,因为只有声明成可选类型后,才可以判断是否为空
// 可选类型会在后续讲解
let view: UIView? = UIView()

// 判断如果view有值,则设置背景
// 错误写法
//if view {
// view.backgroundColor = UIColor.red
//}

if view != nil {
view!.backgroundColor = UIColor.red
}

三目运算符

  • 简化为? :

  • 是对if else的一种简化

var a = 10
var b = 50
// 如果 a>b 成立,result = a,否则 result = b
var result = a > b ? a : b
print(result)

guard语法

  • guard是 Swift 2.0 新增的语法,目的是提高程序的可读性。

  • 它与if语句非常类似,但不同的是当条件为false的时候执行{}里面的代码

  • guard语句必须带有else语句,它的执行逻辑如下:

    • 当条件表达式为true时候跳过else语句中的内容,执行后面的语句组。

    • 条件表达式为false时候执行else语句中的内容,跳转语句一般是return、break、continue或throw

  • 必须在函数范围内使用。

guard 条件表达式 else { return }
语句组
  • 案例一

var age = 18

func online(age: Int) -> Void {

guard age >= 18 else { // guard语句这么理解:确保age大于等于18否则返回
print("回家去")
return
}

print("可以上网")
}

online(age)
  • 案例二

func validatePassword(_ password: String) -> Bool {

// 把不符合条件的过滤掉
guard password.count >= 6 else { return false }
guard password.count <= 12 else { return false }

// 到最后就是正确的
return true
}

switch分支

介绍

  • switch也是常见的分支结构,用于分支较多的情况。

  • Swift 对switch进行了大大的增强,使其拥有其他语言中没有的特性。

  • switch后可以不跟(),但必须有:

  • case后可以跟breakfallthrough

  • 每个case必须包含至少一条执行语句。

  • case后如果是多行语句可以不加{}

案例

  • 案例一

let sex = 0

switch sex {
case 0 :
print("男")
case 1 :
print("女")
default :
print("其他")
}
  • 案例二

    • 一个case判断中,可以判断多个值,它们之间用,隔开。

let sex = 0

switch sex {

case 0, 1:
print("正常人")
default:
print("其他")
}
  • 案例三

    • 如果希望出现之前的case穿透,则可以使用关键字fallthrough

let sex = 0

switch sex {

case 0:
fallthrough
case 1:
print("正常人")
default:
print("其他")
}

支持多种数据类型

  • 浮点型

let pi = 3.14
switch pi {

case 3.14:
print("π")
default:
print("not π")
}
  • 字符串类型(字符串章节)

let m = 5
let n = 10
var result = 0

let opration = "+"

switch opration {

case "+":
result = m + n
case "-":
result = m - n
case "*":
result = m * n
case "/":
result = m / n
default:
result = 0
}

print(result)
  • 区间判断

let score = 88

switch score {

case 0..<60:
print("不及格")
case 60..<80:
print("及格")
case 80..<90:
print("良好")
case 90..<100:
print("优秀")
default:
print("满分")
}

for循环

  • for in循环

for i in 0..<10 {
print(i)
}

for i in 0...10 {
print(i)
}
  • 特殊写法

    • 如果在for循环中不需要用到下标i,可以用_替代。

for _ in 0..<10 {
print("hello")
}
  • 序列函数stride

    • 常见的区间运算符主要是.....<,通过它们可以构造遍历的内容区间。

    • 可以通过stride返回一个序列,作用类似于区间运算符。

// from:开始 through:结束(包含) by:间隔,类似于 1...11
for i in stride(from: 1, through: 11, by: 2) {
print(i)
}

// from:开始 to:结束(不包含) by:间隔,类似于 1..<11
for i in stride(from: 1, to: 11, by: 2) {
print(i)
}

// 构造序列
let seq = stride(from: 0, to: 2, by: 1)
// 迭代器,可以逐一获取序列的值(数组、字典中还会提到)
var i = seq.makeIterator()
i.next() // 0
i.next() // 1
i.next() // nil
i.next() // nil

while循环

  • while循环

    • while的判断句必须有正确的真假。

    • while后面的()可以省略。

var a = 0
while a < 10 {
print(b)
// a++已经在Swift3之后淘汰
a = a + 1
}
  • repeat while循环

    • 循环体至少执行1次 

var b = 0
repeat {
print(b)
b = b + 1
} while b < 20

break与continue

  • 二者都可以中断循环。

  • break中断循环以后,后面的循环也不会执行。

  • continue中断循环以后,只影响当前循环,不会影响后续的循环执行。

for i in 0...10 {    
if i == 5 {
break
}
print(i) // 输出 0 1 2 3 4
}


for i in 0...10 {
if i == 5 {
continue
}
print(i) // 输出 0 1 2 3 4 6 7 8 9 10
}

备注:后续文章首发于微信公众号,除了 Swift、SwiftUI、Combine、iOS开发等实用技术,也会分享一些学习心得,欢迎大家关注。

我的公众号

a2166b7c9f05ef15bd0b0af80118ad1f.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值