[英]How to make a struct that uses Callable (callAsFunction()) works with protocol?
我试图在直接使用protocol
或dependency injection
时使callAsFunction()
工作,但protocol instance
似乎不知道Callable
功能。 我尝试在protocol decorating
中添加func callAsFunction()
,但它也不起作用。 正如您在下面的示例代码中看到的,在使用具体结构创建实例时,我可以使用callAsFunction()
,但不能使用协议实例。
protocol Decorating {
//to implement
}
struct Decorate: Decorating {
func callAsFunction() {
print("Decorated!")
}
}
let decorate: Decorate = Decorate()
decorate() //worked
let decorate2: Decorating = Decorate()
decorate2() //failed
你可以扩展你的协议:
protocol Decorating {
}
extension Decorating {
func callAsFunction() -> {
// Your code
}
}
使用示例:
protocol Decorating {
var foo: Foo
}
extension Decorating {
func callAsFunction() -> {
foo.foo()
}
}
let decorate: Decorating = Decorate()
decorate()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.