这段代码中,错误发生在 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'。

Swift 编程中的字典访问错误解决:'expression resolves to an unused subscript'

原文地址: https://www.cveoy.top/t/topic/qsbN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录