Swift:如何在 return 类型的协议中声明 func?
Swift: How I can declare func in a protocol with return type self?
我想做这样的事情(这不是编译代码,因为这只是我想在最后收到的示例):
protocol AP {
class func perform() -> self
}
class A: UIViewController, AP {
//
...
//
class func perform() -> A {
return A()
}
}
我需要这个作为结果 let vc = A.perform()
,意味着我需要的协议将是 return 自己类型的订阅者
我该怎么做?
- 在协议中使用静态方法而不是 class 方法。
给一个return类型。自己不是 return 类型。
protocol AP {
func perform() -> ()
}
class A: UIViewController, AP {
//
...
//
func perform() {
}
}
我认为这应该可以满足您的要求:
protocol AP {
associatedtype T
static func perform() -> T
}
class A: UIViewController, AP {
//
...
//
class func perform() -> A {
return A()
}
}
您现在可以按照自己的意愿执行此操作:
let vc = A.perform()
我想做这样的事情(这不是编译代码,因为这只是我想在最后收到的示例):
protocol AP {
class func perform() -> self
}
class A: UIViewController, AP {
//
...
//
class func perform() -> A {
return A()
}
}
我需要这个作为结果 let vc = A.perform()
,意味着我需要的协议将是 return 自己类型的订阅者
我该怎么做?
- 在协议中使用静态方法而不是 class 方法。
给一个return类型。自己不是 return 类型。
protocol AP { func perform() -> () } class A: UIViewController, AP { // ... // func perform() { } }
我认为这应该可以满足您的要求:
protocol AP {
associatedtype T
static func perform() -> T
}
class A: UIViewController, AP {
//
...
//
class func perform() -> A {
return A()
}
}
您现在可以按照自己的意愿执行此操作:
let vc = A.perform()