Swift基础入门知识学习(4)-基本运算符-讲给你懂

Swift基础入门知识学习(3)-基本数据类型(型別)-讲给你懂

TED演讲的8个秘诀:学习18分钟高效表达-重点笔记-CSDN下载

目录

Swift 提供了以下几种运算符:

指派运算符

数值运算符

取余数运算

一元负号

一元正号

复合指派运算符

比较运算符

三元运算符

何时使用Swift中的三元运算符?

空值聚合运算符

区间运算符

闭区间运算符

半开区间运算符

单侧区间运算符

逻辑运算符

逻辑“非”

逻辑“且”

逻辑“或”

括号优先


运算符是一个符号,用于告诉编译器执行一个数学或逻辑运算。

Swift 提供了以下几种运算符:

  • 指派运算符
  • 数值运算符
  • 复合指派运算符
  • 比较运算符
  • 三元运算符
  • 空值聚合运算符
  • 区间运算符
  • 逻辑运算符
  • 括号优先

运算符(operator)是检查、改变、合并值的特殊符号或语句。像是加号 + 就是将两个数相加 (let number = 1 + 2)。

指派运算符

理解难度
☆☆☆☆
实用程度
★★★★★

这里的 = ,不是数学的等于;a = b表示将右边的b指派给左边的a,如下:

let b = 10
var a = 5
// 将 b 指派给左边的 a
a = b

想想看,现在 a 是多少呢?
可以打印结果看看。

// 你也可以直接指派元组,会直接分解为多个常数或变数
let (x, y) = (1, 2)
// 现在 x 为 1, y 为 2

数值运算符

理解难度
★☆☆☆☆
实用程度
★★★★★

Swift 中所有数值型别都支援基本的四则运算,加 +、减 -、乘 *、除 / 。这就跟一般的数学运算是一样的作用了。

var c = 3 + 2 
// c 等于 5

var d = 7 - 2 
// d 等于 5

var e = 3 * 2 
// e 等于 6

var f = 10.0 / 2.5 
// f 等于 4.0

加法运算符也可以用于字串的合并:

let 第一句 = "Hello, "
let 第二句 = "world."
let 最后结果 = 第一句 + 第二句

// 印出:Hello, world.
print(最后结果)

取余数运算

理解难度
★★☆☆☆
实用程度
★☆☆☆☆

取余数运算( a % b )是计算b的多少倍刚刚好可以容入a,返回多出来的那部分,就是取余数。就是剩下除不尽的数。

var oneNumber = 9 % 4
print(oneNumber) // 取余数等于 1

Swift 中是可以对浮点数进行取余数的。

8 % 2.5   // 等于 0.5

这个例子中,8除于2.5等于3余0.5,所以结果是一个Double值0.5。

一元负号

理解难度
★☆☆☆☆
实用程度
★☆☆☆☆

数值的正负号可以使用前缀 -(即一元负号)来切换:

let number1 = 3
var anotherNumber1 = -number1 // 为 -3
var finalNumber1 = -anotherNumber1 // 为 3

-anotherNumber1 就是因两个复数,所以就是负负得正了。

一元正号

理解难度
★☆☆☆☆
实用程度
★☆☆☆☆

一元正号 + 则是不做任何改变地回传数值。
既然没什么作用...直接可以省略掉了。

let number2 = -6
var anotherNumber2 = +number2 // 为 -6

复合指派运算符

理解难度
★★★☆☆
实用程度
★★★☆☆​​​​​​​

Swift 提供一个简洁的方式,将数值运算与指派运算合并,像是+=,很多时候可以简化程式,如下:

var n = 10
n += 2 // 这行等同于 n = n + 2 的简写
print(n) // 现在 n 等于 12

// 其他数值运算符也是一样
n -= 4 // n = n - 4 , 现在 n 等于 6
n *= 10 // n = n * 10 , 现在 n 等于 100
n /= 2 // n = n / 2 , 现在 n 等于 20
n %= 2 

想想看,最后 n 等于多少呢?

比较运算符

理解难度
★★★☆☆
实用程度
★★★★★

将两个数值作比较,并返回这个比较是否成立的布尔值(布林值),即返回true或是false,以下是常用的比较运算。

等于(a == b)
不等于(a != b)
大于(a > b)
小于(a < b)
大于等于(a >= b)
小于等于(a <= b)

1 == 1 // 返回 true 因为 1 等于 1
2 != 1 // 返回 true 因为 2 不等于 1
2 > 1 // 返回 true 因为 2 大于 1
1 < 2 // 返回 true 因为 1 小于2
1 >= 1 // 返回 true 因为 1 大于等于 1
2 <= 1 // 返回 false 因为 2 不小于等于 1

true和false,直接翻译就是真的假的;但是更容易理解的解释就是“是的”和“不是的”。

常用于条件语句,像是if条件:

var i = 1
if i == 1 {
    print("是的,就是 1 ")
} else {
    print("不是的,不是 1 ")
}

想想看,打印的结果是什么呢?


这是一个简洁的条件式运算:问题 ? 答案1 : 答案2。问题需要返回一个是否成立的布尔值(布林值),表示true或false,如果为true,则是返回答案1,反之如果为false,则是返回答案2。也就是下列写法的简写:

if 问题 {
    答案1
} else {
    答案2
}

以下是个例子:

var 我的分数 = 25
if 我的分数 < 60 {
    我的分数 = 我的分数 + 50
} else {
    我的分数 = 我的分数 + 20
}

想想看,我的分数现在是多少?

三元运算符

前述例子使用三元运算符可以简化成下面这样:

var 新的成绩 = 40
新的成绩 = 新的成绩 < 60 ? 50 : 20

print(新的成绩)

想想看“新的成绩”是多少?

何时使用Swift中的三元运算符?

三元运算符允许我们根据条件从两个结果中选择一个,并以非常简洁的方式进行选择:

let isAuthenticated = true
print(isAuthenticated ? "Welcome!" : "Who are you?")

有些人非常严重地依赖三元运算符,因为它使代码非常短,而有些人则尽可能远离它,因为它可能会使代码更难阅读。

三元运算符确实可以简化代码。但是在你非常熟悉这个语法之前,理解和易懂的代码。是比优雅简洁却自己也看不是很懂来的更重要。

不過现在有一個好機會使用三元运算符,那就是SwiftUI。在SwiftUI,三元运算符会有很多使用的機會。在这里就不多举出代码示例,因为它可能會讓人昏頭轉向。但是,如果你想的话,你也可以和三元运算符一起加油。

我更喜欢在可能的情况下不使用它们,這樣可以使的代码更容易阅读。

空值聚合运算符

理解难度
★★★★☆
实用程度
★☆☆☆☆

前面章节介绍过的可选类型, Swift 提供一个简洁的使用方法:a ?? b。先判断a是否为nil,如果a有值,不是nil,就会解析a并返回,但如果a为nil,则返回预设值b。

nil的意思就是空直,什么都没有的意思。

也就是下面这个写法的简写:

a != nil ? a! : b
这里用到前面提到的三元运算符,如果a不等于nil,则强制解析a并返回,否则就返回b。

“返回”的意思就是到这里为止,把所得到的数据结果应用出来。

以下为一个例子:

let defaultColor = "red"
var userDefinedColor: String? // 未指派值 所以预设为 nil
var colorToUse = userDefinedColor ?? defaultColor
// 未指派值给 userDefinedColor ,所以会返回 defaultColor
// 这边就打印出红色
print(colorToUse)

// 反之如果有指派值
var userAnotherDefinedColor: String? = "green"
var anotherColorToUse = userAnotherDefinedColor ?? defaultColor
// 这边就打印出绿色
print(anotherColorToUse)

区间运算符

理解难度
★☆☆☆☆
实用程度
★★★☆☆

Swift 提供两个方便表达一个区间的值的运算符。

闭区间运算符

表示方式为:a...b,定义一个包含从a到b(包括a和b)的所有值的区间。b必须大于等于a。

// 1...5 代表的就是 1,2,3,4,5 这五个数字
for index in 1...5 {
    print("\(index) * 5 = \(index * 5)")
}
// 依序会打印出
// 1 * 5 = 5
// 2 * 5 = 10
// 3 * 5 = 15
// 4 * 5 = 20
// 5 * 5 = 25

半开区间运算符

理解难度
★☆☆☆☆
实用程度
★★★☆☆

表示方式为:a..<b,定义一个从a到b但不包括b的区间。b必须大于等于a,但当a等于b时,则不会有值。

// 1..<5 代表的就是 1,2,3,4 这四个数字 不包括 5
for index in 1..<5 {
    print("\(index) * 5 = \(index * 5)")
}
// 依序会打印出
// 1 * 5 = 5
// 2 * 5 = 10
// 3 * 5 = 15
// 4 * 5 = 20

单侧区间运算符

理解难度
★☆☆☆☆
实用程度
★★★☆☆

表示方式为:a...或...a,代表一个只有以一边a为起点或终点,另一边则是无限延伸的区间,下面则是以显示一个阵列的元素为例:

let names = ["Anna", "Alex", "Brian", "Jack"]

for name in names[2...] {
    print(name)
}
// 从阵列索引值为 2 的值开始依序印出
// Brian
// Jack

for name in names[...1] {
    print(name)
}
// 依序印出至阵列索引值为 1 的值
// Anna
// Alex

逻辑运算符

理解难度
★★☆☆☆
实用程度
★★★☆☆

Swift 支援三个标准逻辑运算,常与条件式合用。

逻辑“非”(!a)
逻辑“且”(a && b)
逻辑“或”(a || b)

a及b都是逻辑布尔值(布林值),且皆会返回一个逻辑布尔值(布林值),即true或是false。

逻辑“非”

!a对一个布尔值(布林值)取相反值,即将true变false,或是将false变true。这是一个前缀运算符,且不加空格,例子如下:

let 白色 = true
if !白色 {
    print("不是白色")
}

逻辑“且”

a && b表示只有当a跟b都为true时,才会返回true,否则如果a或b其中一个为false,就会返回false,如下:

let 开 = true
let 有电 = false
if 开 && 有电 {
    print("能使用 !")
} else {
    print("不能使用 !")
}
// 因为其中一个为 false 所以会返回 false
// 打印出:不能使用 !

逻辑“或”

a || b表示只要a跟b其中一个值为true时,就会返回true,除非a和b皆为false,才会返回false,如下:

let 星期六 = true
let 星期日 = false
if 星期六 || 星期日 {
    print("有假日 !")
} else {
    print("不能休假 !")
}

// 因为其中一个为 true 就会返回 true
// 打印出:有假日 !

括号优先

理解难度
★☆☆☆☆
实用程度
★★★☆☆

以上介绍很多运算符,当一个运算式太复杂时,可以使用括号( )来标示清楚,同时也用来表明优先级(如同传统学习数学计算一样,括号括起来的部份要优先计算)。例子如下:

// 数值运算
// 先乘除后加减 所以 number 等于 13
var number = 3 + 2 * 5
// 括号括起来的优先 所以 someNumber 等于 25
var someNumber = (3 + 2) * 5

// 逻辑运算
let 上班 = false
let 星期六 = true
let 星期日 = true

// 括号有优先权
if 上班 && (星期六 || 星期日) {
    print("要上班 !")
} else {
    print("休假 !")
}
// 括号优先,所以先做逻辑“或”判断 星期六 || 星期日 会返回 true
// 再与前面的 “上班” 作逻辑“且”的判断 会返回 false
// 所以这边会印出:休假 !

超速学习-重点笔记.pdf-CSDN下载

真正可以在线上编辑的PDF免费工具怎么修改、删除原有的文字内容呢?PDF是最流行的共享文件格式,大部分文书资料、电子书都使用该格式。可以在网页浏览器、阅读器中打开浏览PDF文件,为的就是不让人轻易随便的就能修改内容。那么,我要怎么才能修改PDF文件中的文字呢?怎么编辑PDF内容?有什么免费的PDF文件编辑器?如果你是需要大量使用PDF的使用者,大概你已经有合适并且习惯使用的;而且大部分是全功能的付费大软件。平常没用到也不想安装在电脑里。就这样,有一天突然要使用PDF的话你就会发现突然找不到适合的工具...花了很长的时间寻https://blog.csdn.net/weixin_42385177/article/details/120627172

猜你喜欢

转载自blog.csdn.net/weixin_42385177/article/details/121448572
今日推荐