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層面說的話,就是該型別的每個例項都指向...