我想用嵌套在里面的字典初始化一个字典,如下所示:
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] 举报,一经查实,本站将立刻删除。