Swift专门针对Void的泛型类

时间:2016-07-05 03:55:32

标签: generics swift2

让我们说我有一个类:

class Function<T> {
    var ptr: () -> T

    init<Func>(block: Func, args: AnyObject...) {
        self.ptr = {() -> T in
            return callFunction(unsafeBitCast(block, AnyObject.self), args) as! T
        }
    }
}

postfix operator ^ { }
postfix func ^ <T>(left: Function<T>) -> T {
    return left.ptr()
}

现在我想专门化这个课程,这样如果TVoid,它就不会返回任何内容..我怎么能这样做?

目前我的工作是:

class Function<T> {
    var ptr: () -> T

    init<Func>(block: Func, args: AnyObject...) {
        self.ptr = {() -> T in
            if let result = callFunction(unsafeBitCast(block, AnyObject.self), args) as? T {
                return result
            }

            return Void() as! T
        }
    }
}

postfix operator ^ { }
postfix func ^ <T>(left: Function<T>) -> T {
    return left.ptr()
}

真的没有办法吗?

0 个答案:

没有答案