在本章中,你将学会一些常用的运算符的使用。
前言
和
Apple
官网或者网上分享的教程类文章不同,我将以实际开发角度讲述
Swift
语言的一些概念和用法,方便大家更好地学习和掌握
Swift
语言。
这同时也是对自己学习
Swift
语言过程的知识整理。
如有错误,以你为准。
我们新建一个
PlayGround
文件,命名为
SwiftOperator
。
赋值运算符
在
Swift
中,我们使用”
=
“作为赋值运算符,示例:
//赋值运算符
我们将屏幕宽度赋值给
screenWidth
,将屏幕高度赋值给
screenHeight
,后面我们就可以直接使用
screenWidth
和
screenHeight
。
我们也可以用元组的方式进行赋值,元祖可以将多个值组合成一个复合值,然后通过赋值的方式
拆分
成多个变量/常量,示例:
let (bookName,bookPrice) = ("秒速五厘米", 45)
赋值后,
bookName
的值为"
秒速五厘米
”,
bookPrice
的值为“
45
”。
算术运算符
在
Swift
中,常见的算术运算符有:
加、减、乘、除、取余
(很少用到),示例:
//算术运算符
.frame(width: screenWidth*0.5 + 10, height: screenHeight/2 - 20)
在上述的代码中,假设手机屏幕宽高为
375*667
。
宽度
width
为屏幕宽度
screenWidth
乘以
0.5
,再加
10
,最终宽度为
197.5
。
高度
height
为屏幕高度
screenHeight
除以
2
,再减
20
,最终高度为
313.5
。
另外一个知识点,加号运算符除了数值计算外,还支持
字符串拼接
,示例:
//算术运算符
let juejinId = "3897092103223517"
let indexUrl = "https://j.cn/user/"
在上述代码中,我们声明了
ID
,然后首页
URL
赋值为固定链接通过
加号
运算符
拼接
字符串。
组合赋值运算符
和其他语言一样,
Swift
也支持组合赋值,示例:
//组合赋值运算符
var number = 0
if !enableUsed {
number += 1
在上述的代码中,我们声明了一个变量
number
,它的值为
0
,当
enableUsed
为
false
时,则
number = number+1
。
比较运算符
比较运算符也是
Swift
语言开发过程中常用的运算符,示例:
// 比较运算符-判断文字合法性
func textError(text: String){
text.count < 1 ? false : true
我们定义了一个判断文字合法性的方法,当输入的文字的字数
小于
1的时候,返回
Bool
值
false
。如果文字字数
大于
1,则返回
Bool
值
true
。
常见的比较运算符有:
等于(==)、不等于(!=)、小于(<)、大于(>)、大于等于(>=)、小于等于(<=)
。
值得注意的一点是,比较运算符中的“
等于
”用的是“
==
”,而我们的
赋值
运算符用的赋值是“
=
”,这点别搞混了。
三元运算符
三元运算符是一种比较特殊也比较常见的运算符,它有点类似我们的
if、else
逻辑,示例:
// 三元运算符
.background(enableUsed ? .black : .white)
在上面的代码中,我们给视图设置填充颜色,并使用
enableUsed
来判断,如果
enableUsed
的值为
true
,则它的颜色为
black
黑色,不然它就是
white
白色。
我们可以注意到三元运算符的格式:
条件 ? 结果1 : 结果 2
我们使用三元运算符可以有效简化我们的代码,在一些场景下,就无需再使用
if、else
来进行二选一的判断了。
空合运算符
空合运算符
(A??B)
主要是可以对参数进行
非空判断
,如果参数
有值
,则
解析
这个值,如果
没有
则返回我们
设定
的值,示例:
//空合运算符
struct Model:Identifiable {
var
在上面的代码中,我们
Text
内的文字来源于我们的
Model
,但如果在前面我们
Model.name
没有赋值的情况下,
Text
解析不了值,则回返回“
文如秋雨
”。
在
MVVM
开发模式中经常会用到空合运算符。
区间运算符
区间运算符有几种:
闭区间运算符、半开区间运算符、单侧区间运算符
。
其中闭区间运算符是最常见的区间运算符,示例:
//区间运算符-闭区间
struct ContentView: View {
var body: some View {
// 简单的列表
List {
ForEach(1 ... 4, id: \.self) {
Text("第 \($0)页")
}
}
}
}
在上述代码中,
ForEach
循环的区间
1 ... 4
就是闭区间运算符的使用,得到的结果就是“
第1页、第2页、第3页、第4页
”。
闭区间
运算符是
包含
了前后两个值,
半开区间
运算符也类似,只是它“
包头不包尾
”,示例:
//区间运算符-半开区间
ForEach(1 .. <4, id: \.self) {
}
很容易理解,半开区间
1 .. <4
,得到的结果是“
第1页、第2页、第3页
”。
而
单侧区间
运算符则是“
一头无限延伸
”,也就是我们只指定一边的区间,另一边不指定。
单侧区间运算符格式为“
..<2
”,但这
不
代表是
0~2
,它是向一侧无限延伸,还包括“
-1、-2、-3…..
”,因此使用常见不多。
逻辑运算符
常见的逻辑运算符包括:
与(&&)、或(||)、非(!)
。
逻辑运算符在实际开发中用到的常见太多了,示例:
//逻辑运算符
//逻辑非
if !enableUsed {
self.showToastMessage = "请输入您的昵称"
self.showToast = true
}
//逻辑或
.scaleEffect(
(titleView.width || ImageView.width < 100) ? 0.95 : 1)
//逻辑与
.offset(x: titleView.width && ImageView.width < 100 ?ImageView.width : 0)
逻辑非运算符代表“
取反
”,如果
enableUsed
的值为
false
,则
!enableUsed
的值为
true
。
逻辑或运算符是两者
其中一项满足
条件,则结果是
0.9
,如果两者
都不满足
则为
0
。
逻辑与运算符则要求
两者必须都满足
和这个条件,否则就为
0
。