在本文中,您將了解Swift的Range,類型和用例。
Range(區(qū)間)是值的間隔。一個簡單的范圍示例是0、1、2、3、4、5、6、7、8、9,因為數(shù)字從0到9是連續(xù)的。
我們可以使用下面描述的兩個范圍運算符快速創(chuàng)建區(qū)間:
它包括間隔(lowerbound到upperBound)中的所有值。使用…(3個點)運算符聲明。
例如: 1...3 定義包含值為1,2,3的范圍
它包括區(qū)間(lowerbound到upperBound)中的所有值,但不包括最后一個(upperBound)數(shù)。使用 ..< 運算符聲明它。
例如: 1..<3 定義包含值1和2的范圍
使用封閉區(qū)間運算符創(chuàng)建的范圍稱為封閉區(qū)間。它包括從下限到上限的所有值。
//1... 3定義包含值1、2和3的范圍 for value in 1...3 { print(value) }
運行該程序時,輸出為:
1 2 3
上面的示例創(chuàng)建了一個包含1到3(1...3)的數(shù)字的范圍。我們使用了一個for-in循環(huán)來查看范圍包含哪些值。要了解有關(guān)for-in循環(huán)的更多信息,請訪問Swift for-in循環(huán)。
使用for-in循環(huán),我們可以看到封閉區(qū)間包含給定范圍內(nèi)的所有值,包括下限(1)和上限(3)。
使用半開區(qū)間運算符創(chuàng)建的區(qū)間稱為半開區(qū)間。它包括從下限到上限的所有值,但不包括上限值。
// 1..<3 定義一個包含值的范圍 1,2 for value in 1..<3 { print(value) }
運行該程序時,輸出為:
1 2
在上面的示例中,我們使用了for-in循環(huán)來查看半開區(qū)間的工作原理。
不用打印所有值,我們可以清楚地看到使用半開區(qū)間運算符僅打印1和2,并且不包括上限值(即3)。
單側(cè)區(qū)間是指在一個方向上盡可能連續(xù)的區(qū)間??梢允褂冒腴_范圍區(qū)間運算符和閉合區(qū)間運算符來創(chuàng)建它,但運算符只能在一側(cè)具有值。
let range = ..<2 print(range.contains(-1)) print(range.contains(2))
運行該程序時,輸出為:
true false
上面的示例使用半開區(qū)間運算符創(chuàng)建一個單側(cè)區(qū)間,該區(qū)間包含小于2的任何數(shù)字。
為了驗證我們的結(jié)果,我們使用了 contains 方法。如果元素位于區(qū)間內(nèi),則 contains 方地返回true,否則返回false。
range.contains(-1) 檢查 -1 是否在區(qū)間內(nèi)。由于其單側(cè)區(qū)間的上限為2 且-1 <2,因此它位于區(qū)間內(nèi),并且語句print(range.contains(-1)) 在屏幕中輸出true。
但是,由于使用半開區(qū)間運算符,上限值(2)不包含在區(qū)間內(nèi)。因此,range.contains(2) 返回 false。
let range = 2... print(range.contains(100)) print(range.contains(1))
運行該程序時,輸出為:
true false
上面的示例使用封閉區(qū)間運算符創(chuàng)建一個單側(cè)區(qū)間,該范圍包含從2到大于2的任何值的數(shù)字。
range.contains(100) 檢查100是否在區(qū)間內(nèi)。由于是單側(cè)區(qū)間,并且100大于2,因此它位于范圍內(nèi),并在屏幕上打印輸出 true。
但是,它具有下限值(2),因此 range.contains(1) 返回false。
區(qū)間的起點必須小于或等于其終點。在我們的示例中 (lowerBound...upperBound) ,下限值必須小于上限值。但是,它可以是負(fù)值。
例如:
3...1 // 錯誤:無法使用upperBound <lowerBound形成Range -3...1 // 這是一個有效區(qū)間。Lowerbound/Upperbound 可以包含負(fù)值。
我們可以使用for-in循環(huán)遍歷整個區(qū)間(不包括單側(cè)區(qū)間)。
我們還可以使用區(qū)間運算符訪問數(shù)組的元素。