天天看點

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:運算符的使用