让我们说我有一个类:
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()
}
现在我想专门化这个课程,这样如果T
是Void
,它就不会返回任何内容..我怎么能这样做?
目前我的工作是:
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()
}
真的没有办法吗?