【发布时间】:2016-07-12 00:38:23
【问题描述】:
我想定义一个允许多种特定类型的值的字典。我目前可以这样定义字典:
var foo = [String: String]
将值限制为一种特定类型
或
var foo = [String: AnyObject]
将值限制为 AnyObject,没有特别限制。
我想做这样的事情:
var foo = [String: <String, Int>]
这将允许我在此字典中仅插入字符串或整数作为值。
我已经考虑过使用枚举,如下所示:Generic dictionary value type in Swift,但我宁愿找到一种方法,让我无需扩展或创建新枚举即可动态指定类型。
var bar = [String: <String, Int, Bool, MyClass>]
似乎我应该能够使用 [String: AnyObject] 的内部字典创建一个包装类,这将允许针对可以插入的任意长的类列表进行编译时类型检查。
class ECDictionary<T> {
private var internal_storage = [String: AnyObject]()
subscript(s: String) -> T {
get {
return internal_storage[s]
}
set(newValue) {
internal_storage[s] = newValue
}
}
}
var myECDictionary = ECDictionary<String, Int, OtherClass>()
我可以使用运行时类型检查来构建它,但我宁愿它在编译时强制执行。这有可能吗?
【问题讨论】:
标签: swift generics dictionary