天天看点

Swift实用小册02:运算符的使用

在本章中,你将学会一些常用的运算符的使用。

前言

和​

​Apple​

​​官网或者网上分享的教程类文章不同,我将以实际开发角度讲述​

​Swift​

​​语言的一些概念和用法,方便大家更好地学习和掌握​

​Swift​

​语言。

这同时也是对自己学习​

​Swift​

​语言过程的知识整理。

如有错误,以你为准。

我们新建一个​

​PlayGround​

​​文件,命名为​

​SwiftOperator​

​。

Swift实用小册02:运算符的使用

赋值运算符

在​

​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​

​。

Swift实用小册02:运算符的使用