Нет такой вещи, как DictionarySlice
, как есть ArraySlice
. Вместо этого dropFirst()
возвращает Slice<Dictionary>
, который не поддерживает ключевые подписи, такие как Dictionary
. Тем не менее, вы можете цикл через Slice<Dictionary>
с парами ключ-значение, как вы можете с Dictionary
:
let dictionary = ["a": 1, "b": 2, "c": 3]
var smallerDictionary: [String: Int] = [:]
for (key, value) in dictionary.dropFirst() {
smallerDictionary[key] = value
}
print(smallerDictionary) // ["a": 1, "c": 3]
Расширение сделает это немного более элегантна:
extension Dictionary {
init(_ slice: Slice<Dictionary>) {
self = [:]
for (key, value) in slice {
self[key] = value
}
}
}
let dictionary = ["a": 1, "b": 2, "c": 3]
let smallerDictionary = Dictionary(dictionary.dropFirst())
print(smallerDictionary) // ["a": 1, "c": 3]
Я бы не рекомендовал делая это, хотя, потому что
- вы не знаете, какой ключ-значение пары будет отброшен, и
- это тоже не случайно.
Но если вы действительно хотите это сделать, теперь вы знаете, как это сделать.