我正在尝试转换myDictionary.dropFirst()为缺少一个键的新词典(我不关心哪一个).dropFirst()返回一个切片.我想要一个与之相同类型的新词典myDictionary.
您可以将Array切片转换为这样的数组let array = Array(slice).什么是字典的等价物?如果我尝试字典(切片),我得到编译错误Argument labels '(_:)' do not match any available overloads
提前谢谢了.
没有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]
Run Code Online (Sandbox Code Playgroud)
扩展会使这更优雅:
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]
Run Code Online (Sandbox Code Playgroud)
不过,我不会真的建议这样做,因为
但如果你真的想这样做,现在你知道该怎么做了.