我对词典词典有疑问。将单个元素放入Dict中的方法是否比我更短?
var cellHeight = [ Int : [ Int : CGFloat ] ]()
// ...
if let _ = cellHeight[0] {
cellHeight[0]![2] = 0.0
} else {
cellHeight[0] = [ 2 : 0.0 ]
}
在我检查过的所有教程中,只解释了如何填写/初始化完整的dict-of-dict而不是从中读取,但不是如何逐个填写它。
答案 0 :(得分:2)
答案 1 :(得分:1)
你做的事情基本上是正确的。你可以稍微优雅一点:
let didit = cellHeight[0]?[2] = 0 // yields an Optional<Void>
if didit == nil { // that didn't work, so create the entry
cellHeight[0] = [2:0]
}
这可以进一步收紧,没有额外的变量:
if nil == (cellHeight[0]?[2] = 0) {
cellHeight[0] = [2:0]
}
如果这是代码中的重复模式,您当然可以将其抽象为函数。