使用varargs将Objective-C宏移植到Swift

使用varargs将Objective-C宏移植到Swift,objective-c,swift,Objective C,Swift,我正在尝试转换此宏: #define returnAsync(block, ...) if (block) { dispatch_async(dispatch_get_main_queue(), ^{ block(__VA_ARGS__); }); } return; 我的结局是: func returnAsync(block: (Any?...) -> (), args: Any?...) { dispatch_async(dispatch_get_main_queue())

我正在尝试转换此宏:

#define returnAsync(block, ...) if (block) { dispatch_async(dispatch_get_main_queue(), ^{ block(__VA_ARGS__); }); } return;
我的结局是:

func returnAsync(block: (Any?...) -> (), args: Any?...) {
    dispatch_async(dispatch_get_main_queue()) {
        block(args)
    }
    return
}
但当我尝试这样调用该函数时:

let block: (Int, Int) -> () = { first, second in print(first + second) }
returnAsync(block, 2, 5)

我抱怨参数类型有意义,考虑<代码>…………/>代码实际上意味着一个函数采用一组数组的变量:<代码> > [任意?] /代码>可变长度。< /P>


有没有办法将宏移植到Swift或我运气不佳?

相关:也相关:这是一个有人试图巧妙使用宏的例子。不用宏就可以了。@gnasher729我在问这个方法签名是什么样子的。