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

举报
文如秋雨 发表于 2022/08/30 12:31:01 2022/08/30
【摘要】 在本章中,你将学会一些常用运算符的使用。前言和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。这同时也是对自己学习Swift语言过程的知识整理。如有错误,以你为准。我们新建一个PlayGround文件,命名为SwiftOperator。赋值运算符在Swift中,我们使用”=“作为赋值运算符,示例://赋...
在本章中,你将学会一些常用运算符的使用。

前言


和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。

这同时也是对自己学习Swift语言过程的知识整理。

如有错误,以你为准。

我们新建一个PlayGround文件,命名为SwiftOperator。




赋值运算符


在Swift中,我们使用”=“作为赋值运算符,示例:

//赋值运算符

let screenWidth = UIScreen.main.bounds.size.width
let screenHeight = UIScreen.main.bounds.size.height

我们将屏幕宽度赋值给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://juejin.cn/user/" + appId

在上述代码中,我们声明了ID,然后首页URL赋值为固定链接通过加号运算符拼接字符串。

组合赋值运算符


和其他语言一样,Swift也支持组合赋值,示例:

//组合赋值运算符

var number = 0

if !enableUsed {
    number += 1
}

在上述的代码中,我们声明了一个变量number,它的值为0,当enableUsed为false时,则number = number+1 。

比较运算符


比较运算符也是Swift语言开发过程中常用的运算符,示例:

// 比较运算符-判断文字合法性

func textError(text: String) -> Bool {
    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 name: String
}


Text(Model.name ?? "文如秋雨")

在上面的代码中,我们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。



以上就是本章的全部内容。
快来动手试试吧!
如果本专栏对你有帮助,不妨点赞、评论、关注~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。