Swift 中的Range型別和 Range運算子

2021-10-24 16:25:59 字數 3718 閱讀 8936

swift中有五個最常用的range型別:

• closedrange: a…b

• range a…對應的,有五個range運算子,用來定義上面的range型別

• closed range operator: a…b

• half-open range operator: a…closedrange型別代表乙個閉區間 [a, b]

其宣告是:

struct

closedrange

<

bound

>

where

bound

:comparable

我們可以用 closed range operator (a…b) 創造乙個closedrange例項

let closedrange:

closedrange

<

double

>

=1.2..

.6.3

我們可以檢查乙個值是否在乙個closedrange範圍內

closedrange.

contains

(3.6

)// true

如果乙個closedrange用整數作為其邊界,我們可以把它用在for-in loop中

for i in

-1…2

// -1

// 0

// 1

// 2

range型別代表乙個右半開區間 [a, b),注意這裡只能是右邊開區間,左邊必須是閉區間

其宣告是:

struct

range

<

bound

>

where

bound

:comparable

我們可以用 half-open range operator (a…let range: range<

double

>

=1.2..

<

6.3我們可以檢查乙個值是否在乙個range範圍內

range.

contains

(3.6

)// true

range.

contains

(6.3

)// false, 因為上界是開區間

如果乙個range用整數作為其邊界,我們可以把它用在for-in loop中

for i in-1

..<

2// -1

// 0

// 1

partialrangethrough 型別代表乙個左邊界無窮的閉區間 (-infinite, b]

其宣告是:

struct

partialrangethrough

<

bound

>

where

bound

:comparable

我們可以用 prefix closed range operator (…b)創造乙個partialrangethrough例項

let partialrangethrough:

partialrangethrough

<

double

>

= …6.3

我們可以檢查乙個值是否在乙個partialrangethrough範圍內

partialrangethrough.

contains

(3.6

)// true

partialrangethrough.

contains

(6.3

)// true

如果乙個partialrangethrough用整數作為其邊界,我們可以用它代表乙個 collection 型別的索引 (從 0 到上邊界)

let numbers =[10

,20,30

,40,50

,60,70

]print

(numbers[..

.3])

// [10, 20, 30, 40]

partialrangefrom 型別代表乙個右邊界無窮的閉區間 [a, +infinite)

其宣告是:

struct

partialrangefrom

<

bound

>

where

bound

:comparable

我們可以用 postfix closed range operator (a…)創造乙個partialrangefrom例項

let partialrangefrom:

partialrangefrom

<

double

>

=1.2…

我們可以檢查乙個值是否在乙個partialrangefrom範圍內

partialrangefrom

(1.2

)// true

partialrangefrom

(6.3

)// true

如果乙個partialrangefrom用整數作為其邊界,我們可以用它代表乙個 collection 型別的索引 (從下邊界到結束)

let numbers =[10

,20,30

,40,50

,60,70

]print

(numbers[

3…])

// [40, 50, 60, 70]

partialrangeupto 型別代表乙個左邊界無窮的開區間 (-infinite, b)

其宣告是:

struct

partialrangeupto

<

bound

>

where

bound

:comparable

我們可以用 prefix half-open range operator (…let partialrangeupto:

partialrangeupto

<

double

>=.

.<

6.3我們可以檢查乙個值是否在乙個partialrangeupto範圍內

partialrangeupto

(1.2

)// true

partialrangeupto

(6.3

)// false, 因為上界是開區間

如果乙個partialrangeupto用整數作為其邊界,我們可以用它代表乙個 collection 型別的索引 (從0到上邊界-1)

let numbers =[10

,20,30

,40,50

,60,70

]print

(numbers[..

<3]

)// [10, 20, 30]

Swift 運算子和 Range

一.基本運算子 basic operators 數字運算子,邏輯運算子等大多數標準的c語言運算子,數字運算子可以檢測運算結果避免溢位 超出儲存型別允許的值的範圍 1.一元運算子 unary operators 賦值運算子 assignment operator let b 7 var a 10 a ...

Swift 中的值型別和引用型別

值型別和引用型別只在之前的面試過程中碰到過,最近學習過程中,在體驗 swift 的物件導向特性的時候,在 struct 和 class 中再次碰到了這個問題,說一說自己的收穫吧。值型別和引用型別在 oc 裡面理解起來應該更方便。在 oc 中,我們例項化物件的時候有兩種方式。一種是需要在變數名前面加個...

Swift中的值型別和參照型別

在swift中,型別分為兩類 第一種是值型別,該型別的每個例項持有資料的副本,並且該副本對於每個例項來說是獨一無二的乙份,比如結構體 struct 列舉 enum 元組 tuple 都是值型別。第二種是參照型別,該型別的例項共享資料唯一的乙份副本 在native層面說的話,就是該型別的每個例項都指向...