Function Swift 2-函数中作为参数的函数
我有一个函数,作为参数还有另外两个函数。 我的代码工作得很好,但是,当我调用函数时,我希望看到参数的名称 这是我的职责:Function Swift 2-函数中作为参数的函数,function,parameters,swift2,Function,Parameters,Swift2,我有一个函数,作为参数还有另外两个函数。 我的代码工作得很好,但是,当我调用函数时,我希望看到参数的名称 这是我的职责: func dispatchSuperMain(global_queue:()->(), main_queue:()->()) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { global_queue()
func dispatchSuperMain(global_queue:()->(), main_queue:()->()) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
global_queue()
dispatch_async(dispatch_get_main_queue(), {
main_queue()
})
})
}
我使用:(working)调用函数
如何格式化函数以查看参数的名称
例如,我想像这样调用我的函数:(不工作)
作为高阶函数参数的函数/闭包与常规函数的常规类型参数在相同的规则下工作。高阶函数的附加功能是,您可以将最后一个闭包作为尾随闭包放置,在调用函数时放置在paranthese的外部和后面(正如您在上面的示例中对第二个函数参数所做的那样) 无论如何,对于高阶函数中的第一个函数参数,请显式添加一个外部参数名(否则,请忽略函数的第一个参数)。为了使用第二个函数参数已经存在的外部参数名,在调用它时,只需将两个闭包都放在函数parantesse中即可 例如,考虑
func f(fun1 fun1: (Int) -> (Int), fun2: (Int) -> (Int)) -> Int {
let a = 1
let b = fun1(a)
let c = fun2(a)
return b+c
}
let a = f(fun1: { 2*$0 }, fun2: { 3*$0 } )
print(a) // 5
或者,您的void
-函数示例的简化版本
func g(global_queue global_queue: () -> (), main_queue: () -> ()) {
global_queue() // prints "global"
main_queue() // prints "main"
}
g(global_queue: { print("global") }, main_queue: { print("main") })
如果您选择以最终闭包作为尾部调用函数,我认为不可能使用其外部参数名。这有点含蓄地解释了,因为我们可以在不使用外部名称的情况下使用尾随闭包,即使它不是函数的第一个参数。例如,对于常规函数,我们必须始终为函数调用提供外部名称(对于第一个参数以外的参数),除非我们在函数签名的相应参数中明确添加前缀\
func h(a: Int, b: Int) {}
h(1, 2) // error: missing argument label 'b:' in call
h(1, b: 2) // ok
func hI(a a: Int, _ b: Int) {}
hI(1, 2) // ok
@斯诺很乐意帮忙!
func g(global_queue global_queue: () -> (), main_queue: () -> ()) {
global_queue() // prints "global"
main_queue() // prints "main"
}
g(global_queue: { print("global") }, main_queue: { print("main") })
func h(a: Int, b: Int) {}
h(1, 2) // error: missing argument label 'b:' in call
h(1, b: 2) // ok
func hI(a a: Int, _ b: Int) {}
hI(1, 2) // ok