用法一
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(position: Dictionary<Key, Value>.Index) -> Dictionary<Key, Value>.Element { get }
Key
符合 Hashable
时可用。返回值
键和值对应于 position
的二元素元组。
参数
position
要访问的键值对的位置。
position
必须是字典的有效索引并且不等于endIndex
。
概述
此下标将索引放入字典中,而不是键,并将相应的键值对作为元组返回。在执行将索引返回到字典中的基于集合的操作时,请将此下标与结果值一起使用。
例如,要在字典中查找特定值的键,请使用 firstIndex(where:)
方法。
let countryCodes = ["BR": "Brazil", "GH": "Ghana", "JP": "Japan"]
if let index = countryCodes.firstIndex(where: { $0.value == "Japan" }) {
print(countryCodes[index])
print("Japan's country code is '\(countryCodes[index].key)'.")
} else {
print("Didn't find 'Japan' as a value in the dictionary.")
}
// Prints "(key: "JP", value: "Japan")"
// Prints "Japan's country code is 'JP'."
可用版本
用法三
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(key: Key) -> Value? { get set }
Key
符合 Hashable
时可用。返回值
如果 key
在字典中,则与 key
关联的值;否则,nil
。
参数
key
在字典中查找的关键。
概述
如果在字典中找到键,则此 key-based
下标返回给定键的值,如果未找到键,则返回 nil
。
以下示例创建一个新字典并打印在字典中找到的键 ("Coral"
) 和字典中未找到的键 ("Cerise"
) 的值。
var hues = ["Heliotrope": 296, "Coral": 16, "Aquamarine": 156]
print(hues["Coral"])
// Prints "Optional(16)"
print(hues["Cerise"])
// Prints "nil"
当您为键分配值并且该键已经存在时,字典会覆盖现有值。如果字典不包含键,则键和值将作为新的键值对添加。
这里,键 "Coral"
的值从 16
更新为 18
并为键 "Cerise"
添加新的键值对。
hues["Coral"] = 18
print(hues["Coral"])
// Prints "Optional(18)"
hues["Cerise"] = 330
print(hues["Cerise"])
// Prints "Optional(330)"
如果将 nil
指定为给定键的值,则字典会删除该键及其关联值。
在以下示例中,通过将 nil
分配给基于键的下标,从字典中删除键 "Aquamarine"
的键值对。
hues["Aquamarine"] = nil
print(hues)
// Prints "["Coral": 18, "Heliotrope": 296, "Cerise": 330]"
可用版本
相关用法
- Swift Dictionary subscript(_:default:)用法及代码示例
- Swift Dictionary suffix(from:)用法及代码示例
- Swift Dictionary suffix(_:)用法及代码示例
- Swift Dictionary sorted(by:)用法及代码示例
- Swift Dictionary split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代码示例
- Swift Dictionary shuffled(using:)用法及代码示例
- Swift Dictionary shuffled()用法及代码示例
- Swift Dictionary allSatisfy(_:)用法及代码示例
- Swift Dictionary values用法及代码示例
- Swift Dictionary dropFirst(_:)用法及代码示例
- Swift Dictionary firstIndex(where:)用法及代码示例
- Swift Dictionary first(where:)用法及代码示例
- Swift Dictionary merge(_:uniquingKeysWith:)用法及代码示例
- Swift Dictionary isEmpty用法及代码示例
- Swift Dictionary reduce(_:_:)用法及代码示例
- Swift Dictionary init(uniqueKeysWithValues:)用法及代码示例
- Swift Dictionary makeIterator()用法及代码示例
- Swift Dictionary randomElement()用法及代码示例
- Swift Dictionary init(grouping:by:)用法及代码示例
- Swift Dictionary dropLast(_:)用法及代码示例
- Swift Dictionary min(by:)用法及代码示例
- Swift Dictionary max(by:)用法及代码示例
- Swift Dictionary updateValue(_:forKey:)用法及代码示例
- Swift Dictionary removeValue(forKey:)用法及代码示例
- Swift Dictionary map(_:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 Dictionary subscript(_:)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。