import Foundation
class ParentClass<T>
{
var _success : ((T)->Void)?
}
extension ParentClass
{
func success<T>(success: ((T) -> Void)?) -> ParentClass where T : Codable
{
self._success = success
return self
}
}
我试图将通用闭包存储到变量中以备后用,但编译器抛出错误。“无法分配类型'((T)-> Void)的值吗?键入'(((T)-> Void)?'“
答案 0 :(得分:5)
您已经引入了局部通用变量T
,它正在遮盖T
中(无关的)通用变量ParentClass
。
import Foundation
class ParentClass<T>
{
var _success : ((T)->Void)?
}
extension ParentClass where T: Codable
{
func success(success: ((T) -> Void)?) -> ParentClass
{
self._success = success
return self
}
}
但是,成功函数是一个实例方法并没有任何意义。它应该是一个初始化程序,或者是一个静态方法。