Swift 从字典下标方法返回值
我正在使用Swift 4编程语言的一些新功能。出于某种原因,它在下面的代码中抱怨,我返回self[key]值Swift 从字典下标方法返回值,swift,Swift,我正在使用Swift 4编程语言的一些新功能。出于某种原因,它在下面的代码中抱怨,我返回self[key]值 extension Dictionary { subscript<T>(key :String, type :T) -> T? { get { return self[key] as? T // this line } } } 扩展字典{ 下标(键:String,类型:T)->T{ 得到{ 将s
extension Dictionary {
subscript<T>(key :String, type :T) -> T? {
get {
return self[key] as? T // this line
}
}
}
扩展字典{
下标(键:String,类型:T)->T{
得到{
将self[key]返回为?T//此行
}
}
}
我的游乐场。游乐场:1:5:注意:找到此候选人
subscript<T>(key :String, type :T) -> T? {
下标(键:字符串,类型:T)->T?{
你知道我做错了什么吗
更新:
extension Dictionary {
subscript<T>(key :Key) -> T? {
return self[key] as? T
}
}
struct Pokemon {
var title :String
}
let pokemon = Pokemon(title: "Pikachu")
var dictionary = [String:Any]()
dictionary["foo"] = "hello world"
dictionary["pokemon"] = pokemon
let p = dictionary["pokemon"] // this calls the default subscript not mine
扩展字典{
下标(key:key)->T{
将self[key]返回为?T
}
}
结构口袋妖怪{
变量标题:字符串
}
让口袋妖怪=口袋妖怪(标题:“皮卡丘”)
变量字典=[String:Any]()
字典[“foo”]=“你好,世界”
字典[“口袋妖怪”]=口袋妖怪
让p=dictionary[“pokemon”]//这会调用默认的下标,而不是我的
并非所有字典都有字符串
键;)这是真的!但我不是在创建另一个以字符串为键的下标函数。但是您尝试实现的下标采用字符串
键–您的意思是键
。比较一下。您可能还想让类型
参数采用T.Type
。如果您显式地将p
注释为Any
以外的内容,则应该调用您的下标。但实际上,这是对字典API的一个非常不明确的添加,我将使用显式的类型:
参数保留它。此外,我怀疑您的下标实现将无限递归。