iOS開發Swift-運算子

來源:互聯網
上載者:User

標籤:

 

一、運算子

1.Swift所支援的部分運算子有以下一些

賦值運算子:=

複合賦值運算子:+=、-=

算術運算子:+、-、*、/

求餘運算子:%

自增、自減運算子:++、--

比較子:==、!=、>、<、>=、<=

邏輯運算子:&&、||、!

三目運算子:? :

範圍運算子:..< 、...

溢出運算子:&+、&-、&*、&/、&%

 

2.賦值運算子

(1)1對1賦值

var a = 5

let b = 20

 

(2)N對N賦值(元組)

let (x, y) = (1, 2)   // x的值是1,y的值是2,並且都是常量

 

注意:跟C\OC不一樣的是:Swift的賦值運算子沒有傳回值

if (x = y) {  }

// 上面的代碼是錯誤的,因為x = y並沒有返回具體的值

 

說明:這樣的好處是防止誤用 = 和 ==

 

3.算術運算子

簡單使用

1 + 2       // 3

5 - 3       // 2

2 * 3       //  6

10.0 / 2.5  // 4.0

 

4.求餘運算子

%在Swift中叫“求餘運算子”,也有語言叫做“模運算子”

9 % 4 // 1

-9 % 4 // -1

9 % -4 // 1

-9 % -4 // -1

提示:求餘結果的正負跟%左邊數值的正負一樣

 

注意:跟C語言不一樣的是,Swift的%支援浮點數的計算

8 % 2.5  // 0.5

 

5.Bool類型

Bool類型,也被稱為邏輯類型(Logical),就2種取值

true:真

false:假

 

注意:在C語言中:0是假,非0就是真;而在Swift中沒有這種概念

if語句的條件必須是Bool類型的值

(1)錯誤寫法

if (10) {

    println("條件成立")

}

 

(2)正確寫法

if (true) {

    println("條件成立")

}

 

6.三目運算子

比較子\邏輯運算子會返回Bool類型的值,取值有2種可能

true:真,6 > 5,(7 > 6) && (9 != 7)

false:假,6 < 5,(7 >= 6) && (9 == 7)

 

三目運算子的條件必須是Bool類型的值

(1)錯誤寫法

let a = 10

let c = a ? 100 : 200

 

(2)正確寫法

let c = a != 0 ? 100 : 200

let c = false ? 100 : 200

 

7.範圍運算子

範圍運算子用來表示一個範圍,有2種類型的範圍運算子

閉合範圍運算子:a...b,表示[a, b],包含a和b

半閉合範圍運算子:a..<b,表示[a, b),包含a,不包含b

 

舉例:

// index的值從1~5

 

// index的值從1~4

 

8.溢出運算子

(1)簡單說明

每種資料類型都有自己的取值範圍,預設情況下,一旦賦了一個超出取值範圍的數值,會產生編譯或者執行階段錯誤

注意:下面的寫法是錯誤的

let x = UInt8.max

let y = x + 1

第2行代碼會在運行時報錯(執行階段錯誤)

   

提示:上面是執行階段錯誤,下面的錯誤提示是編譯時間錯誤。

  

Swfit為整型計算提供了5個&開頭的溢出運算子,能對超出取值範圍的數值進行靈活處理

溢出加法 &+

溢出減法 &-

溢出乘法 &*

溢出除法 &/

溢出求餘 &%

(2)值的上溢

let x = UInt8.max

let y = x &+ 1

第1行代碼過後:x的值是 255(最大值)

第2行代碼過後:y的值是 0(最小值)

(3)值的下溢

let x = UInt8.min

let y = x &- 1

第1行代碼過後:x的值是 0(最小值)

第2行代碼過後:y的值是 255(最大值)

  

有符號整數也有類似的溢出現象

let x = Int8.min

let y = x &- 1

第1行代碼過後:x的值是 -128(最小值)

第2行代碼過後:y的值是 127(最大值)

  

(4)除零溢出

預設情況下,一個數除於0,或者對0求餘數,編譯器會直接報錯

let x = 10

let y = x / 0

let z = x % 0

第2、3行代碼:編譯器都會報錯

 

如果使用溢出運算子,就不會報錯

let x = 10

let y = x &/ 0

let z = x &% 0

y和z的值最終都是0

 

二、斷言

1.簡單說明

斷言是一種即時檢測條件是否為true的方法

如果條件為true,那麼代碼繼續執行

如果條件為false,就拋出錯誤資訊,直接終止程式的運行

 

2.斷言的用法

使用全域的assert函數

assert函數接收一個Bool運算式和一個宣告失敗時顯示的訊息

assert(index >= 0, "index必須大於0")

如果index大於等於0,就繼續執行後面的代碼

如果index小於0,就拋出錯誤資訊(下面的黑色字),直接終止程式的運行

assertion failed: index必須大於0

 

assert(index >= 0)

可以省略錯誤資訊,但不推薦,這樣不利於調試

 

3.使用情境和注意

(1)下面的情境,可能用到斷言

檢測數組的索引:不能太小或者太大,否則造成數組越界

檢測傳遞給函數的參數:如果是無效參數,將不能在該函數中使用

 

(2)斷言的使用注意

斷言會導致程式啟動並執行中止,如果不管條件是否成立,都要繼續往下執行代碼,那就不能用斷言

斷言可以保證錯誤在開發過程中會被及時發現,但發布的應用裡最好不要使用

如果一個程式用著用著就突然崩潰閃退,會嚴重影響使用者體驗

iOS開發Swift-運算子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.