无法分配类型'(((T)-> Void)?'键入'(((T)-> Void)?'

时间:2019-09-10 12:43:15

标签: ios swift

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)?'“

1 个答案:

答案 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
    }
}

但是,成功函数是一个实例方法并没有任何意义。它应该是一个初始化程序,或者是一个静态方法。