当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Swift ContiguousArray subscript(_:)用法及代码示例


用法一

实例下标

subscript(_:)

访问数组元素的连续子范围。

声明

subscript(bounds: Range<Int>) -> ArraySlice<Element> { get set }

参数

bounds

整数范围。范围的边界必须是数组的有效索引。

概述

返回的ArraySlice 实例对与原始数组相同的元素使用相同的索引。特别是,与数组不同,该切片可能具有非零 startIndex 和不等于 countendIndex 。始终使用切片的 startIndexendIndex 属性,而不是假设其索引以特定值开始或结束。

此示例演示获取字符串数组的切片,查找切片中字符串之一的索引,然后在原始数组中使用该索引。


let streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
let streetsSlice = streets[2 ..< streets.endIndex]
print(streetsSlice)
// Prints "["Channing", "Douglas", "Evarts"]"


let i = streetsSlice.firstIndex(of: "Evarts")    // 4
print(streets[i!])
// Prints "Evarts"

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法二

实例下标

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"

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法三

实例下标

subscript(_:)

访问指定位置的元素。

声明

subscript(index: Int) -> Element { get set }

参数

index

要访问的元素的位置。 index 必须大于或等于 startIndex 且小于 endIndex

概述

以下示例使用索引下标来更新数组的第二个元素。在特定位置分配新值 ("Butler") 后,该值在同一位置立即可用。


var streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
streets[1] = "Butler"
print(streets[1])
// Prints "Butler"

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

用法四

实例下标

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

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相关用法


注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 ContiguousArray subscript(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。