我试图在swift中创建一个泛型类,以确保其类型参数是一个闭包。这个闭包可以采用任何类型的任意数量的参数。
class ClassWithClosure<Closure> {}
var sensical = ClassWithClosure<(Int) -> Double>() // This is okay.
var alsoFine = ClassWithClosure<(String, String) -> Bool>() // This is also okay.
var nonsensical = ClassWithClosure<String>() // This shouldn't work.
我遇到的麻烦是泛型类型约束只能是类或协议。
(Swift Documentation)
类型约束指定类型参数必须从特定类继承,或符合特定协议或协议组合。
据我所知,没有只有闭包继承的类,也没有只有闭包符合的协议。
我能看到的两个选项是:
(_: Any...) -> Any?
再次,这摆脱了swifts不错的类型检查。这两个选项似乎都值得怀疑,我怀疑有更好的方法。有没有办法将此泛型类的类型参数限制为闭包?