如何存储一个函数数组,以便稍后在JavaScript中的数组中回调? Any和AnyObject类型不能保存具有不同类型的方法签名的函数。
您可以使用枚举将各种功能放入Array中,然后使用开关提取功能。
enum MyFuncs {
case Arity0 ( Void -> Void )
case Arity2 ( (Int,String) -> Void)
}
func someFunc(n:Int,S:String) { }
func boringFunc() {}
var funcs = Array<MyFuncs>()
funcs.append(MyFuncs.Arity0(boringFunc))
funcs.append( MyFuncs.Arity2(someFunc))
for f in funcs {
switch f {
case let .Arity0(f):
f() // call the function with no arguments
case let .Arity2(f):
f(2,"fred") // call the function with two args
}
}