快速创建通用变量字典

乔纳森锅

我正在寻找一种在字典中存储泛型子类的方法,但我遇到了问题。

在下面的示例中,我试图创建一个我知道将子类化的对象字典Entity<T>我成功地存储我的子类的单个实例FloatEntity,并StringEntityEntity类型变种,但是当我尝试在同一存储类型的词典Dictionary<String, Entity>我得到一个错误。

class Entity<T> {
    var _value: T
    var value: T { get { return _value } set {_value = newValue}}

    init (defaultValue: T) {
        _value = defaultValue
    }
}

class FloatEntity: Entity<Float> {
}

class StringEntity: Entity<String> {
}

func run () {
    let variable1: Entity = FloatEntity (defaultValue: 1)
    let variable2: Entity = StringEntity (defaultValue: "")
    var dictionary: Dictionary<String, Entity> = [
        "One": FloatEntity (defaultValue: 1),
        "Two": StringEntity (defaultValue: ""),
    ]
    print (variable1)
    print (variable2)
    print (dictionary)
}

错误:

无法将“FloatEntitiy”类型的值转换为预期的字典值类型“Entity”

谁能建议我如何使用字典来存储这样的泛型?

瓦瓦马

variable1variable2不是类型,Entity但实际上是Entity<Float>Entity<String>这是两种不相关的类型。使用 aprotocol将它们联合起来:

protocol EntityProtocol { }

class Entity<T> : EntityProtocol {
    var _value: T
    var value: T { get { return _value } set {_value = newValue}}

    init (defaultValue: T) {
        _value = defaultValue
    }
}

class FloatEntity: Entity<Float> {
}

class StringEntity: Entity<String> {
}

func run () {
    let variable1: Entity = FloatEntity (defaultValue: 1)
    let variable2: Entity = StringEntity (defaultValue: "")
    var dictionary: Dictionary<String, EntityProtocol> = [
        "One": FloatEntity (defaultValue: 1),
        "Two": StringEntity (defaultValue: ""),
    ]
    print (variable1)
    print (variable2)
    print (dictionary)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

快速调试通用类型变量

来自分类Dev

从plist快速创建字典数组

来自分类Dev

无法从JSON快速创建字典

来自分类Dev

从plist快速创建字典数组

来自分类Dev

使用alamofire快速创建字典

来自分类Dev

如何快速创建依赖的通用协议

来自分类Dev

快速创建全局变量

来自分类Dev

用Pickle创建Python快速字典?

来自分类Dev

用Pickle创建Python快速字典?

来自分类Dev

快速创建字典,将字符串数组作为值

来自分类Dev

快速创建一个带有 for 循环的字典

来自分类Dev

如何从OS环境变量创建字典?

来自分类Dev

从Ansible中的注册变量创建字典/列表

来自分类Dev

创建变量以检查与更改字典的相等性

来自分类Dev

快速通用协议

来自分类Dev

下标通用,快速

来自分类Dev

快速扩展通用类

来自分类Dev

快速调用通用函数

来自分类Dev

如何从R中的列表快速创建伪变量

来自分类Dev

用于创建字段变量的快速修复-如何取回

来自分类Dev

Django通用登录视图会自动创建变量吗?

来自分类Dev

eval的替代方法,以创建可处理多个变量的通用函数

来自分类Dev

为网格创建通用变量以在每个网格中重用配置

来自分类Dev

为网格创建通用变量以在每个网格中重用配置

来自分类Dev

快速可变字典的扩展

来自分类Dev

快速浏览字典

来自分类Dev

快速遍历字典数组

来自分类Dev

数组快速字典

来自分类Dev

快速浏览字典