Swift 编程中的字典访问错误解决:'expression resolves to an unused subscript'
这段代码中,错误发生在 nums[p, default: 0] 这行,你使用字典的下标语法来获取键 p 对应的值,如果键不存在则返回默认值 0。但你并没有将这个获取的值赋给任何变量或使用它,因此编译器会认为这个表达式是多余的,导致错误 'expression resolves to an unused subscript'。
解决方法:
你需要将获取的值赋给一个变量,然后使用这个变量来更新 nums 字典。修改后的代码如下:
while true {
guard let n = Int(readLine()!) else {
break
}
var sets = [[Int]]()
for _ in 0..<n {
let set = readLine()!.split(separator: " ").map { Int($0)! }
sets.append(set)
}
var parent = [Int: Int]()
var nums = [Int: Int]()
for s in sets {
let p = s[0]
// 获取 p 对应的值,并赋给 count 变量
let count = nums[p, default: 0]
// 更新 nums 字典
nums[p] = count + 1
for i in s {
if parent[i] == nil {
parent[i] = p
nums[p, default: 0] += 1
} else {
var tmp = i
while parent[tmp] != p {
let temp = parent[tmp]
parent[tmp] = p
tmp = temp!
}
parent[tmp] = p
if tmp != p, let count = nums[tmp] {
nums[p, default: 0] += count
nums.removeValue(forKey: tmp)
}
}
}
}
print(nums.keys.count)
print(nums.values.max()!)
}//报错了:main.swift:14:13: error: expression resolves to an unused subscript
nums[p, default: 0]
现在,你获取 p 对应的值并赋给了 count 变量,然后使用 count 变量来更新 nums 字典,从而避免了错误 'expression resolves to an unused subscript'。
原文地址: https://www.cveoy.top/t/topic/qsbN 著作权归作者所有。请勿转载和采集!