gpt4 book ai didi

generics - 在 Swift 中实例化泛型类型的对象

转载 作者:IT王子 更新时间:2023-10-29 05:23:49 25 4
gpt4 key购买 nike

我正在 Swift 中实现一个类 Foo,它应该实例化 SuperBar 的给定 子类 的对象,例如栏:SuperBar。我真的很喜欢 Swift 中的泛型,所以我尝试以这种方式实现它:

class Foo<T: SuperBar> {

func instantiateObject() -> T {
return T()
}

}

class SuperBar {

}

class Bar: SuperBar {

}

let foo = Foo<Bar>()

let obj = foo.instantiateObject()

您可以在 Xcode Playground 中运行代码片段并观察 objSuperBar 类型而不是 Bar 类型,尽管它说 Bar 当我 Alt-单击常量名称时。

有什么想法吗? :)

最佳答案

将类 init 标记为 required 然后调用 init :

class SuperBar {
required init() {
}
}


class Foo<T: SuperBar> {

func instantiateObject() -> T {
return T.init()
}

}

关于generics - 在 Swift 中实例化泛型类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com