【问题标题】:Can you append to an array inside a dict?你可以追加到字典内的数组吗?
【发布时间】:2014-08-19 23:39:11
【问题描述】:

在 Swift 中,你可以声明一个字典,其中的值是一个数组类型,例如:

var dict: [Int: [Int]] = [:]

但是,如果您为给定键分配数组:

dict[1] = []

然后看来 Swift 将数组视为不可变的。例如,如果我们尝试:

(dict[1] as [Int]).append(0) // explicit cast to avoid DictionaryIndex

然后我们得到错误“[Int] 类型的不可变值只有名为 'append' 的变异成员”。


如果我们显式地使数组可变,则追加有效,但不会修改原始数组:

var arr = dict[1]!
arr.append(0) // OK, but dict[1] is unmodified

如何附加到一个 dict 值的数组?

更一般地说,如何将字典的值视为可变的?


一种解决方法是事后重新分配值,但这似乎根本不是好的做法:

var arr = dict[1]!
arr.append(0)
dict[1] = arr

【问题讨论】:

  • 我真的希望我们能够作为受骗者对我们自己的问题进行具有约束力的近距离投票。那个直到提交后才显示为相关>meta.stackexchange.com/questions/172002/…)

标签: swift


【解决方案1】:

尝试解开数组而不是强制转换:

dict[1]!.append(0)

【讨论】:

  • 就是这样,谢谢!我看到 dict[1] 单独给了我一个 DictionaryItem 而不是数组,所以我没有想到如果我打开它,swift 的类型推断会以不同的方式工作。呵呵!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 2021-01-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 2017-07-27
相关资源
最近更新 更多