let range = 3..<3 // lowerBound == upperBound这种类型的范围由Swift标准库在多个地方使用,例如在数组insert(_, at:)方法中。
@_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我们该怎么解释?
简单地说,:如果range 5...5代表索引5,range 5..<5代表什么?
发布于 2017-08-10 10:18:25
In :如果range
5...5代表索引5,range5..<5代表什么?
5..<5是从位置5开始的空范围。您可以验证它是否为空,其中包括:
print((5..<5).isEmpty) // true但请注意:
(5..<5) != (6..<6)因为他们从不同的地方开始。
正如您在问题中所指出的,空范围对于指定职位可能很有用。在replaceWithSubrange中,它可以用于指定插入值的位置。
示例:
var letters = ["a", "b", "c"]
letters.replaceSubrange(1..<1, with: ["x", "x", "x"])
print(letters)"a“、"x”、"b“、"c”
这告诉replaceSubrange将从位置1开始的字母范围替换为0,代之以["x", "x", "x"]。换句话说,在位置1之前插入新值。
虽然在代码中看不到范围文本(如(5..<5) ),但在for循环中的代码中经常会出现空范围,例如:
for i in 0 ..< array.count {
// do something with i
}在这种情况下,如果数组为空,则范围将没有值,for循环将根本不执行。
发布于 2017-08-10 10:18:48
简而言之:如果范围代表索引5,那么
5..<5代表什么?
很简单,空旷的范围。
适用于:
let range = 5..<5如果您试图检查它是否为空,您应该得到true
range.isEmpty //true考虑:
let range = 5..<5
let testingArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
let value = testingArray[range]在这种情况下,value将是包含零元素的ArraySlice。
https://stackoverflow.com/questions/45610049
复制相似问题