gpt4 book ai didi

swift 2 : Why doesn't this Dictionary extension compiles?

转载 作者:行者123 更新时间:2023-11-28 13:03:58 24 4
gpt4 key购买 nike

Xcode7 抛出:

Cannot subscript a value of type 'Dictionary<Key,Value>' with an index of type 'T'

我在这里错过了什么?

extension Dictionary where Key: StringLiteralConvertible, Value: AnyObject {
func boolOr<T:StringLiteralConvertible>(fall: Bool, key: T) -> Bool {
return (self[key] as? Bool) ?? fall
}
}

试图让它成为 String也不起作用(我用 String 而不是 T 得到同样的错误)

let s = "\(key)"
return self[s] as? Bool ?? fall

最佳答案

正如评论中已经提到的,类型约束在 boolOr() 上方法不是必需的:

extension Dictionary where Key: StringLiteralConvertible, Value: AnyObject {
func boolOr(fall: Bool, key: Key) -> Bool {
return (self[key] as? Bool) ?? fall
}
}

因为扩展声明中已经限制了 key 类型。您的代码无法编译,因为 <T:StringLiteralConvertible>引入本地类型占位符 T这与 Key字典的类型。

但实际上我不明白你为什么要对关键类型:

extension Dictionary where Value: AnyObject {
func boolOr(fall: Bool, key: Key) -> Bool {
return (self[key] as? Bool) ?? fall
}
}

关于 swift 2 : Why doesn't this Dictionary extension compiles?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33236720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com