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

Bev*_*tel 0 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
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图将通用闭包存储到变量中以备后用,但编译器抛出错误。“无法分配类型'((T)-> Void)的值吗?” 键入'(((T)-> Void)?'“

Ale*_*ica 5

你已经出台了当地通用的变量T,这是阴影的(无关)通用可变TParentClass

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
    }
}
Run Code Online (Sandbox Code Playgroud)

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