我定义了一个泛型类,如下
class A<T:Any>{
var value:T?
}
我想知道如何将 T 限制为函数类型,并可以在 A 类中编写类似 value() 的代码。
let a = A<()->()>()
最佳答案
我遇到了类似的问题,我最终是这样解决的:
首先,我定义了一个泛型类型,表示一个接受单个参数和返回值的函数:
typealias Monad<A, R> = (A) -> (R)
然后,我定义了我的类,以采用输入类型的泛型类型参数。就我而言,传递的每个函数都将返回 void,因此我不需要两个类型参数。
class HoldsMyCallback<A> {
let callback: Monad<A, Void>
init(callback: @escaping Monad<A, Void>) {
self.callback = callback
}
}
...
let funcKoozie = HoldsMyCallback<Int> {
print("keep my \($0) function cold")
}
funcKoozie.callback(1)
关于swift - 检查泛型类型是否是 Swift 中的函数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39972601/