swift流程控制

这篇博客详细介绍了Swift编程中的流程控制结构,包括if-else条件判断、while和repeat-while循环、for循环的各种用法,以及如何使用区间运算符进行迭代。此外,还探讨了switch语句的使用,包括case的匹配、fallthrough的贯穿效果以及where子句的应用。文章深入浅出地阐述了这些基本概念,是理解Swift控制流的重要参考资料。
摘要由CSDN通过智能技术生成

流程控制

if-else
  • if后面的条件可以省略小括号
  • 条件后面的大括号不可以省略
  • if后面必须是布尔值
let age = 4
if age >= 22 {
    print("Get married")
} else if age >= 18 {
    print("Being a adult")
} else if age >= 7 {
    print("Go to school")
} else{
    print("Just a child")
}
while和repeat-while
var num = 5
while num > 0 {
    print("num is \(num)")
    num -= 1
} // 打印了5次
  • repeat-while相当于do-while
var num = -1
repeat {
    print("num is \(num)")
} while num > 0 // 打印了1次
for
  • 闭区间运算符:a…b, a <= 取值 <= b
let names = ["Anna", "Alex", "Brian", "Jack"]
for i in 0...3 {
    print(names[i])
} // Anna Alex Brian Jack

let range = 1...3
for i in range {
    print(names[i])
} // Alex Brian Jack

for _ in 1...3 {
    print("for")
} // 打印了3次


// i默认是let,有需要时可以声明为var
for var i in 1...3 {
    i += 5
    print(i)
}// 6 7 8
  • 半开区间运算符:a…<b, a <= 取值 < b
for i in 1..<5 {
    print(i)
} // 1 2 3 4
  • 单侧区间:让区间朝一个方向尽可能的远,如 [2…] / […<2]
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names[0...3] {
    print(name)
} // Anna Alex Brian Jack

for name in names[2...] {
    print(name)
} // Brian Jack

for name in names[...2] {
    print(name)
} // Anna Alex Brian

for name in names[..<2] {
    print(name)
} // Anna Alex

let range = ...5
range.contains(7) // false
range.contains(4) // true
range.contains(-3) // true
  • 字符、字符串也能使用区间运算符,但默认不能用在for-in中
let stringRange1 = "cc"..."ff" // ClosedRange<String>
stringRange1.contains("cb") // false
stringRange1.contains("dz") // true
stringRange1.contains("fg") // false

let stringRange2 = "a"..."f"
stringRange2.contains("d") // true
stringRange2.contains("h") // false
  • \0到~囊括了所有可能要用到的ASCII字符
let characterRange: ClosedRange<Character> = "\0"..."~"
characterRange.contains("G") // true
  • 带间隔的区间值
let hours = 11
let hourInterval = 2
// tickMark 的取值,从4开始,累加2, 不超过11
for tickMark in stride(from: 4, through: hours, by: hourInterval) {
    print(tickMark)
}
//得到4 6 8 10
switch
  • case、default后面不能写大括号{}
  • 默认可以不写break,并不会贯穿到后面的条件
  • switch必须处理所有情况
  • case、default后面至少要有一条语句
  • 如果不想做任何事,加个break即可
  • 如果能保证已处理所有情况,也可以不必使用default
var number = 1
switch number
{
case 1:
    print("number is 1")
case 2:
    print("number is 2")
default:
    print("number is other")
} // number is 1
  • 使用fallthrough可以实现贯穿效果
var number = 1
switch number {
case 1:
    print("number is 1")
    fallthrough
case 2:
    print("number is 2")
default:
    print("number is other")
} // number is 1 // number is 2
区间匹配、元组匹配
  • 可以使用下划线 _ 忽略某个值

在这里插入图片描述

值绑定
  • 必要时let也可以改为var
    在这里插入图片描述
where

在这里插入图片描述

标签语句

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值