用法一
subscript(_:)
声明
subscript(bounds: Range<Int>) -> Slice<UnsafeMutableBufferPointer<Element>> { get nonmutating set }
参数
bounds
缓冲区索引的范围。范围的边界必须是缓冲区的有效索引。
概述
访问的切片对与原始缓冲区使用的相同元素使用相同的索引。始终使用切片的 startIndex
属性,而不是假设其索引从特定值开始。
此示例演示从字符串缓冲区获取切片,查找切片中字符串之一的索引,然后在原始缓冲区中使用该索引。
var streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
streets.withUnsafeMutableBufferPointer { buffer in
let streetSlice = buffer[2..<buffer.endIndex]
print(Array(streetSlice))
// Prints "["Channing", "Douglas", "Evarts"]"
let index = streetSlice.firstIndex(of: "Evarts") // 4
buffer[index!] = "Eustace"
}
print(streets.last!)
// Prints "Eustace"
可用版本
用法二
subscript(_:)
声明
subscript(bounds: Range<Self.Index>) -> Slice<Self> { get }
SubSequence
为 Slice<Self>
时可用。参数
bounds
一系列集合的索引。范围的边界必须是集合的有效索引。
概述
访问的切片对与原始集合相同的元素使用相同的索引。始终使用切片的 startIndex
属性,而不是假设其索引从特定值开始。
此示例演示获取字符串数组的切片,查找切片中字符串之一的索引,然后在原始数组中使用该索引。
let streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
let streetsSlice = streets[2 ..< streets.endIndex]
print(streetsSlice)
// Prints "["Channing", "Douglas", "Evarts"]"
let index = streetsSlice.firstIndex(of: "Evarts") // 4
print(streets[index!])
// Prints "Evarts"
可用版本
用法三
subscript(_:)
声明
subscript(bounds: Range<Self.Index>) -> Slice<Self> { get set }
参数
bounds
一系列集合的索引。范围的边界必须是集合的有效索引。
概述
访问的切片对与原始集合相同的元素使用相同的索引。始终使用切片的 startIndex
属性,而不是假设其索引从特定值开始。
此示例演示获取字符串数组的切片,查找切片中字符串之一的索引,然后在原始数组中使用该索引。
var streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
let streetsSlice = streets[2 ..< streets.endIndex]
print(streetsSlice)
// Prints "["Channing", "Douglas", "Evarts"]"
let index = streetsSlice.firstIndex(of: "Evarts") // 4
streets[index!] = "Eustace"
print(streets[index!])
// Prints "Eustace"
可用版本
用法四
subscript(_:)
声明
subscript<R>(r: R) -> Self.SubSequence where R : RangeExpression, Self.Index == R.Bound { get }
参数
bounds
一系列集合的索引。范围的边界必须是集合的有效索引。
概述
范围表达式转换为相对于该集合的具体子范围。例如,将 PartialRangeFrom
范围表达式与数组一起使用会访问从范围表达式开头到数组结尾的子范围。
let streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
let streetsSlice = streets[2...]
print(streetsSlice)
// ["Channing", "Douglas", "Evarts"]
访问的切片对与原始集合使用的相同元素使用相同的索引。此示例在 streetsSlice
中搜索切片中的字符串之一,然后在原始数组中使用该索引。
let index = streetsSlice.firstIndex(of: "Evarts") // 4
print(streets[index!])
// "Evarts"
始终使用切片的 startIndex
属性,而不是假设其索引从特定值开始。尝试使用切片索引范围之外的索引访问元素可能会导致运行时错误,即使该索引对原始集合有效。
print(streetsSlice.startIndex)
// 2
print(streetsSlice[2])
// "Channing"
print(streetsSlice[0])
// error: Index out of bounds
可用版本
用法五
subscript(_:)
声明
subscript(i: Int) -> Element { get nonmutating set }
参数
i
要访问的元素的位置。
i
必须在0..<count
范围内。
概述
以下示例使用缓冲区指针的下标来访问和修改指向数组连续内容的可变缓冲区的元素:
var numbers = [1, 2, 3, 4, 5]
numbers.withUnsafeMutableBufferPointer { buffer in
for i in stride(from: buffer.startIndex, to: buffer.endIndex - 1, by: 2) {
let x = buffer[i]
buffer[i + 1] = buffer[i]
buffer[i] = x
}
}
print(numbers)
// Prints "[2, 1, 4, 3, 5]"
可用版本
相关用法
- Swift UnsafeMutableBufferPointer suffix(_:)用法及代码示例
- Swift UnsafeMutableBufferPointer suffix(from:)用法及代码示例
- Swift UnsafeMutableBufferPointer shuffled()用法及代码示例
- Swift UnsafeMutableBufferPointer shuffle(using:)用法及代码示例
- Swift UnsafeMutableBufferPointer split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代码示例
- Swift UnsafeMutableBufferPointer starts(with:)用法及代码示例
- Swift UnsafeMutableBufferPointer sorted()用法及代码示例
- Swift UnsafeMutableBufferPointer sort()用法及代码示例
- Swift UnsafeMutableBufferPointer sort(by:)用法及代码示例
- Swift UnsafeMutableBufferPointer sorted(by:)用法及代码示例
- Swift UnsafeMutableBufferPointer shuffle()用法及代码示例
- Swift UnsafeMutableBufferPointer shuffled(using:)用法及代码示例
- Swift UnsafeMutableBufferPointer split(separator:maxSplits:omittingEmptySubsequences:)用法及代码示例
- Swift UnsafeMutableBufferPointer allocate(capacity:)用法及代码示例
- Swift UnsafeMutableBufferPointer prefix(through:)用法及代码示例
- Swift UnsafeMutableBufferPointer map(_:)用法及代码示例
- Swift UnsafeMutableBufferPointer filter(_:)用法及代码示例
- Swift UnsafeMutableBufferPointer elementsEqual(_:)用法及代码示例
- Swift UnsafeMutableBufferPointer reduce(into:_:)用法及代码示例
- Swift UnsafeMutableBufferPointer min(by:)用法及代码示例
- Swift UnsafeMutableBufferPointer indices用法及代码示例
- Swift UnsafeMutableBufferPointer enumerated()用法及代码示例
- Swift UnsafeMutableBufferPointer contains(_:)用法及代码示例
- Swift UnsafeMutableBufferPointer compactMap(_:)用法及代码示例
- Swift UnsafeMutableBufferPointer firstIndex(where:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 UnsafeMutableBufferPointer subscript(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。