具有泛型类型的属性

用户9363939

是否可以具有泛型类型的属性?

我正在尝试做的事情:

Value使用以下结构调用基类

class Value {
  var genericProperty: T

  init<T>(type: T) {
      switch type.self {
      case is Int.Type:
        genericProperty is Int
      case is [Int.Type]:
        genericProperty is [Int]
      default:
        genericProperty is Any
      }
  }
}

然后有一堆定义genericProperty应该是什么类型的子类

像这样的东西:

class IntValue: Value {
  override init<T>(type: T) {
      super.init(type: Int.self)
  }
}

class IntArrayValue: Value {
  override init<T>(type: T) {
      super.init(type: [Int.self])
  }
}

这是否以某种方式可能associatedType

为了澄清(可能这种设计很糟糕)。我想沿着这条线做一些事情:

func handle(values: [Value]) {
  values.forEach {
    switch $0 {
      case is IntValue.Type:
        // Here I will now know that `genericProperty` will have type `Int` 
        // and can assign to a property with `Int` type

        property: Int = $0.genericProperty
      case is IntArrayValue.Type:
        // Here I know it will be an array
      ...
    }
  }
}
巴托博士

不确定这是否是您要查找的内容,但是...您可以创建一个通用基类并添加指定具体类型的子类:

class Value<T> {
  var value: T
  init(_ value: T) {
    self.value = value
  }
}

现在一些具有特定值类型的子类:

class IntValue: Value<Int> {}
class StringValue: Value<String> {}

以下是它们的使用方法:

let intValue = IntValue(42)
intValue.value // 42

let stringValue = StringValue("Hi")
stringValue.value // "Hi"

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

确保泛型类型具有某些属性

来自分类Dev

在C#中检查T泛型类型具有属性S(泛型)

来自分类Dev

具有泛型类型的泛型集合生成

来自分类Dev

具有泛型类型的泛型集合生成

来自分类Dev

具有多个特征的泛型类型

来自分类Dev

创建具有泛型类型的函数

来自分类Dev

具有泛型的Scala类型类

来自分类Dev

具有多个泛型类型的ArrayList?

来自分类Dev

具有接口类类型的泛型

来自分类Dev

具有泛型类型的contains()

来自分类Dev

如何向编译器保证泛型类型将具有一定的属性?

来自分类Dev

Typescript - 使用泛型扩展具有联合类型属性的接口

来自分类Dev

具有多个类型参数的泛型推断类型

来自分类Dev

类中具有2个泛型类型的方法,其中1个泛型类型

来自分类Dev

类中具有2个泛型类型的方法,其中1个泛型类型

来自分类Dev

调用具有多个泛型类型的泛型方法,而无需指定每个泛型类型

来自分类Dev

在Scala中使用具有泛型类型的lambda

来自分类Dev

特定枚举类型的“集合”,但具有泛型

来自分类Dev

如何约束泛型类型以使其具有new()?

来自分类Dev

具有泛型的Java F-Bound类型

来自分类Dev

具有新类型约束的泛型构造函数

来自分类Dev

具有类参数的泛型类型推断

来自分类Dev

TypeScript泛型:React中具有联合类型的道具

来自分类Dev

返回并使用具有匹配项的泛型类型

来自分类Dev

C#从具有约束的泛型推断类型

来自分类Dev

如何实现具有泛型类型的接口?

来自分类Dev

具有泛型返回类型的vararg方法中的@SafeVarargs

来自分类Dev

具有模板专业化的泛型类型转换

来自分类Dev

Typescript中具有泛型的子类型约束

Related 相关文章

热门标签

归档