如何创建一个内联匿名函数,以便在函数调用中立即使用?
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
函数?
我试过的
- 我正在读这本书,iOS 12 Programming Fundamentals with Swift by Matt Neuberg 但他跳过了解释带参数的匿名方法。
- 我用谷歌搜索和搜索,但找不到我能弄清楚的 swift 示例。
- 我尝试了很多变体,以下是最接近的变体,但我收到如下所示的错误:
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=] * ) }
我创建了这个 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
函数?
我试过的
- 我正在读这本书,iOS 12 Programming Fundamentals with Swift by Matt Neuberg 但他跳过了解释带参数的匿名方法。
- 我用谷歌搜索和搜索,但找不到我能弄清楚的 swift 示例。
- 我尝试了很多变体,以下是最接近的变体,但我收到如下所示的错误:
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=] * ) }