如何创建一个内联匿名函数,以便在函数调用中立即使用?

How to create an inline anonymous function, for immediate use in a function call?

我创建了这个 Swift 函数,它接受一个函数作为参数:

func doMath(_ f:(_ i1 : Int, _ i2 : Int) -> 
          (), _ i1: Int, _ i2: Int) {
    print("doing Math")
    f(i1, i2)
}

该函数有两个参数(均为 Int)并且 returns 什么都没有。

我可以使用非匿名函数通过以下代码成功调用该方法。

func add(_ m1:Int, _ m2: Int){
    print (m1 + m2)
}

doMath(add, 3,5)

调用 doMath 时,它打印:

doing Math

然后调用add函数, 然后打印:

8

什么语法允许使用匿名函数调用 doMath 函数?

我试过的


doMath(5,8, { 
   (m1:Int, m2:Int) -> ()  in  
   print(m1 * m2) 
 })

我收到一条错误消息:

func doMath——正如你定义的那样——将闭包作为第一个参数, 和两个整数作为第二和第三个参数。因此你称它为

doMath({
    (m1:Int, m2:Int) -> ()  in
    print(m1 * m2)
}, 5, 8)

或使用 shorthand 参数:

doMath({ print([=11=] * ) }, 5, 8)

如果将函数定义更改为将闭包作为最后一个 参数

func doMath(_ i1: Int, _ i2: Int, _ f:(_ i1 : Int, _ i2 : Int) -> ()) {
    print("doing Math")
    f(i1, i2)
}

那么你会称它为

doMath(5, 8, { print([=13=] * ) })

或者,使用“尾随闭包”语法:

doMath(5, 8) { print([=14=] * ) }