在本章中,你将學會一些常用的運算符的使用。
前言
和
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
。