编程进阶网编程进阶网
  • 基础组成体系
  • 程序编程原理
  • 异常和IO系统
  • 六大设计原则
  • 设计模式导读
  • 创建型设计模式
  • 结构型设计模式
  • 行为型设计模式
  • 设计模式案例
  • 面向对象思想
  • 基础入门
  • 高级进阶
  • JVM虚拟机
  • 数据集合
  • Java面试题
  • C语言入门
  • C综合案例
  • C标准库
  • C语言专栏
  • C++入门
  • C++综合案例
  • C++专栏
  • HTML
  • CSS
  • JavaScript
  • 前端专栏
  • Swift
  • iOS入门
  • 基础入门
  • 开源库解读
  • 性能优化
  • Framework
  • 方案设计
  • 媒体音视频
  • 硬件开发
  • Groovy
  • 常用工具
  • 大厂面试题
  • 综合案例
  • 网络底层
  • Https
  • 网络请求
  • 故障排查
  • 专栏
  • 数组
  • 链表
  • 栈
  • 队列
  • 树
  • 递归
  • 哈希
  • 排序
  • 查找
  • 字符串
  • 其他
  • Bash脚本
  • Linux入门
  • 嵌入式开发
  • 代码规范
  • Markdown
  • 开发理论
  • 开发工具
  • Git管理
  • 百宝箱
  • 开源协议
  • 技术招聘
  • 测试经验
  • 职场提升
  • 技术模版
  • 关于我
  • 目标清单
  • 学习框架
  • 育儿经验
  • 我的专栏
  • 底层能力
  • 读书心得
  • 随笔笔记
  • 职场思考
  • 中华历史
  • 经济学故事
  • 基础组成体系
  • 程序编程原理
  • 异常和IO系统
  • 六大设计原则
  • 设计模式导读
  • 创建型设计模式
  • 结构型设计模式
  • 行为型设计模式
  • 设计模式案例
  • 面向对象思想
  • 基础入门
  • 高级进阶
  • JVM虚拟机
  • 数据集合
  • Java面试题
  • C语言入门
  • C综合案例
  • C标准库
  • C语言专栏
  • C++入门
  • C++综合案例
  • C++专栏
  • HTML
  • CSS
  • JavaScript
  • 前端专栏
  • Swift
  • iOS入门
  • 基础入门
  • 开源库解读
  • 性能优化
  • Framework
  • 方案设计
  • 媒体音视频
  • 硬件开发
  • Groovy
  • 常用工具
  • 大厂面试题
  • 综合案例
  • 网络底层
  • Https
  • 网络请求
  • 故障排查
  • 专栏
  • 数组
  • 链表
  • 栈
  • 队列
  • 树
  • 递归
  • 哈希
  • 排序
  • 查找
  • 字符串
  • 其他
  • Bash脚本
  • Linux入门
  • 嵌入式开发
  • 代码规范
  • Markdown
  • 开发理论
  • 开发工具
  • Git管理
  • 百宝箱
  • 开源协议
  • 技术招聘
  • 测试经验
  • 职场提升
  • 技术模版
  • 关于我
  • 目标清单
  • 学习框架
  • 育儿经验
  • 我的专栏
  • 底层能力
  • 读书心得
  • 随笔笔记
  • 职场思考
  • 中华历史
  • 经济学故事
  • 01.Swift基础语法
  • 02.运算符和流程控制
  • 03.函数与闭包
  • 04.高级运算符和枚举
  • 05.类和结构体
  • 06.属性&方法&构造
  • 07.内存管理和异常
  • 08.拓展&泛型&协议

02.运算符和流程控制

目录介绍

  • 2.1 运算符
    • 2.1.1 赋值运算符
    • 2.1.2 算术运算符
    • 2.1.3 逻辑运算符
    • 2.1.4 比较运算符
    • 2.1.5 条件运算符
  • 2.2 特殊运算符
    • 2.2.1 空合并运算符
    • 2.2.2 区间运算符
  • 2.3 循环结构
    • 2.3.1 for-in循环结构
    • 2.3.2 while循环结构
    • 2.3.3 repeat-while条件循环
  • 2.4 条件选择与多分支选择
    • 2.4.1 if与if-else
    • 2.4.2 switch-case多分支
  • 2.5 流程跳转语句
    • 2.5.1 continue跳出
    • 2.5.2 break跳出
    • 2.5.3 fallthrough语句
    • 2.5.4 return返回
    • 2.5.5 throw抛出异常
    • 2.5.6 guard语句

2.1 运算符

2.1.1 赋值运算符

赋值运算符应该是在编程中出现频率最高的运算符之一,在对任何量值进行赋值时,都需要 使用到赋值运算符“=”。

需要注意,“=”在Swift 语言中是赋值运算符,并不是相等运算符,对 于一些编程初学者,很容易将相等运算符“==”与赋值运算符“=”混淆使用。

2.1.2 算术运算符

算术运算符用于进行一些基本的数学运算,例如加、减、乘、除等。

需要注意的是,Swift 语言从2.2版本之后删除了自增运算符“++”与自减运算符“--”,目前版本的Swift语言中不可 以再使用这两个运算符。

var A = 10
var B = 20

print("A + B 结果为:\(A + B)")
print("A - B 结果为:\(A - B)")
print("A * B 结果为:\(A * B)")
print("B / A 结果为:\(B / A)")
A += 1   // 类似 A++
print("A += 1 后 A 的值为 \(A)")
B -= 1   // 类似 B--
print("B -= 1 后 B 的值为 \(B)")

2.1.3 逻辑运算符

逻辑运算符进行逻辑运算操作。可以简单理解 为,逻辑运算即是生活中所定义的真与假。系统定义的基本逻辑运算符会返回一个Bool类型的逻 辑值,因此,基本逻辑运算符组成的逻辑表达式在 if 判断语句中会经常用到。

Swift 中支持的基本逻辑运算符有逻辑与运算符“&&”、逻辑或运算符 “Il” 、 逻辑非运算符 “!”三种。逻辑运算只在逻辑值 (Bool 类型值)之间进行,与、或、非三种运算中前两者为二元 运算符,需要有两个Bool 类型的操作数。非运算符为一元运算符,需要一个Bool 类型的操作数,

它们有如下特点:

  1. ●与:两个操作数都为真,结果才为真,有一个操作数为假则结果为假。
  2. ●或:两个操作数有一个为真则结果为真,两个操作数都为假则结果为假。
  3. ●非:操作数为真则结果为假,操作数为假则结果为真。

2.1.4 比较运算符

Swift 中的比较运算符用于两个操作数之间的比较运算,其会返回一个Bool 类型的逻辑值。

基本的比较运算符有等于比较运算符“==”、小于比较运算符“<”、大于比较运算符“>”、不等 于比较运算符“!=”、小于等于比较运算符“<=”以及大于等于比较运算符“>=”。

2.1.5 条件运算符

条件运算符(三目运算符)是一种三元运算符,其可以简便实现代码中的条件选择逻辑。

2.2 特殊运算符

2.2.1 空合并运算符

可选值类型(Optional) 是 Swift 语言的一个独特之处,空合并运算符就是针对可选类型而设计的运算符。

空合并运算符(nil coalescing operator)用于提供一个默认值,以防止可选值为nil。空合并运算符使用两个连续的问号(??)表示。

let optionalName: String? = nil
let username = optionalName ?? "Guest"
print(username) // 输出: "Guest"

在上面的示例中,optionalName是一个可选字符串,其值为nil。使用空合并运算符,我们为username提供了一个默认值"Guest",以防optionalName为nil。

如果optionalName的值不为nil,那么username将取optionalName的值;如果optionalName为nil,那么username将取默认值"Guest"。

2.2.2 区间运算符

2.3 循环结构

2.3.1 for-in循环结构

Swift 语言中的for-in 结构则强大很多,既可以进行无序的循环遍历,也可以进行有序的循环遍历。

2.3.2 while循环结构

2.3.3 repeat-while条件循环

2.4 条件选择与多分支选择

2.4.1 if与if-else

2.4.2 switch-case多分支

2.5 流程跳转语句

2.5.1 continue跳出

2.5.2 break跳出

2.5.3 fallthrough语句

2.5.4 return返回

2.5.5 throw抛出异常

2.5.6 guard语句

guard 是一种用于提前退出函数、方法或循环的语句。它用于检查条件是否为真,如果条件为假,则执行 else 分支中的代码来执行提前退出操作。

guard 语句的一般语法如下:

guard condition else {
    // 条件为假时执行的代码
    // 执行提前退出操作,例如返回、抛出异常等
}

以下是一个示例,展示了如何使用 guard 语句来验证输入参数是否满足要求:

func processInput(_ input: Int) {
    guard input > 0 else {
        print("输入参数必须大于0")
        return // 提前退出函数
    }
    
    // 在这里继续处理输入参数
    print("输入参数有效,继续处理...")
}

使用 guard 语句来检查输入参数 input 是否大于 0。如果条件为假,则打印一条错误消息并提前退出函数。如果条件为真,则继续执行后续的代码。

使用 guard 语句可以提高代码的可读性和可维护性,避免了深层嵌套的条件语句。

贡献者: yangchong211
上一篇
01.Swift基础语法
下一篇
03.函数与闭包