gpt4 book ai didi

Swift:返回受泛型类型约束的类

转载 作者:行者123 更新时间:2023-11-30 10:02:50 26 4
gpt4 key购买 nike

我有一个基本的泛型类:

class SharedClass<T> {}

以及它的构建器:

class SharedClassBuilder {
func build<T>() -> SharedClass<T>? {
return ...
}
}

我想要做的是返回一个继承SharedClass并符合T的实例。例如:

protocol MyObject {
func doIt()
}

var result: SharedClass<MyObject>? = SharedClassBuilder().build()
result?.doIt()

不幸的是,Swift 编译器提示返回的类型没有名为 doIt 的成员。

有办法实现我想要的吗?

最佳答案

我怀疑您并不是希望返回的类受到泛型类型的约束,而是要求返回的类成为受约束类型的实例。在您的代码片段中,您期望解包的结果符合MyObject。更进一步,这意味着 SharedClass 的一致性完全取决于它的构造方式。据我所知,Swift 不支持这一点。

但是,没有什么可以阻止您拥有 SharedClass 的一个 T 成员。大致如下:

class SharedClass<T>  {
var v : T?
}

class SharedClassBuilder {
func build<T>() -> SharedClass<T>? {
return SharedClass()
}
}

protocol MyObject {
func doIt()
}

var result: SharedClass<MyObject>? = SharedClassBuilder().build()
result?.v?.doIt()

关于Swift:返回受泛型类型约束的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37508442/

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