let range = 3..<3 // lowerBound == upperBound
這種類型的範圍由Swift標準庫在多個地方使用,例如在數組insert(_, at:)
方法中。爲什麼允許CountableRange具有相同的lowerBound和upperBound?
@_inlineable
public mutating func insert(_ newElement: Element, at i: Int) {
_checkIndex(i)
self.replaceSubrange(i..<i, with: CollectionOfOne(newElement))
}
當我們寫
let range = 5...5 // CountableClosedRange
range.lowerBound // returns 5
range.upperBound // returns 5
這意味着,我們希望有一個範圍,僅包括一個索引的5
但是,當我們寫
let range = 5..<5 // CountableRange
range.lowerBound // returns 5
range.upperBound // returns 5
我們如何解釋這一點?
簡而言之:如果範圍5...5
代表指數5
,什麼範圍5..<5
代表什麼?
這有什麼奇怪的?這是一個空的範圍。當用它調用'replaceSubrange'時,你說你不希望任何元素被替換;你只是想插入新的。 – Hamish
@Hamish如果範圍'5 ... 5'代表索引'5',範圍'5 .. <5'代表什麼? –
一個空的範圍:) – Hamish