微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

嵌套的Swift词典

我想用嵌套在里面的字典初始化一个字典,如下所示:

var a = [Int:[Int:Float]]()
a[1][2] = 12

但是我收到一个错误

(Int:[Int:Float]) does not have a member named 'subscript'

我已经攻击了其他各种方法,所有这些方法都遇到了某种问题.

知道为什么这不起作用吗?

解决方法

您可以像这样创建自己的2D字典:

struct Dict2D<X:Hashable,Y:Hashable,V> {
    var values = [X:[Y:V]]()
    subscript (x:X,y:Y)->V? {
        get { return values[x]?[y] }
        set {
            if values[x] == nil {
                values[x] = [Y:V]()
            }
            values[x]![y] = newValue
        }
    }
}
var a = Dict2D<Int,Int,Float>()
a[1,2] = 12
println(a[1,2]) // Optional(12.0)
println(a[0,2]) // nil

重点是通过[x,y]而不是[x] [y]或[x]?[y]访问元素.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐