gpt4 book ai didi

swift - 基于类的通用返回类型

转载 作者:搜寻专家 更新时间:2023-11-01 06:16:39 25 4
gpt4 key购买 nike

我正在尝试在一个类上创建工厂方法,该方法会自动转换为它所在的类。

extension NSObject {
// how can I get the return type to be the current NSObject subclass
// instead of NSObject?
class func create() -> NSObject {
return self.init()
}

// example: create(type: NSArray.self)
class func create<T:NSObject>(type:T.Type) -> T {
return T()
}
}

示例二有效,但作为类方法没有任何优势:

let result = NSArray.create(type: NSArray.self) 

但我希望能够调用:

let result = NSArray.create() 

之后无需转换。有没有办法在 Swift 中做到这一点?

最佳答案

您可以为此使用类级别的 Self:

extension NSObject {
class func create() -> Self {
return self.init()
}
}

let array = NSArray.create()

但我真的不明白你为什么要这么做,因为你还不如添加一个初始化程序。

关于swift - 基于类的通用返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43396892/

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