【问题标题】:How to pass argument to multiple trailing closures?如何将参数传递给多个尾随闭包?
【发布时间】:2022-01-25 05:30:06
【问题描述】:

我想在两个闭包中打印“voala”,但是它得到错误:在范围内找不到“声音”。我在书中找到了类似的示例,但是它不起作用,因此询问。

func multipleTrailing(scream sound: String, first closure1: () -> Void, second closure2: () -> Void) {
    closure1()
    closure2()
    }

multipleTrailing(scream: "voala") {
    print("\(sound), calling from closure1, omitting argument label \"first\"")
        } second: {
    print("\(sound), calling from closure2, keeping argument label \"second\"")
        }

【问题讨论】:

    标签: swift closures


    【解决方案1】:

    你应该给闭包赋值。这里两个闭包都有一个String 类型的输入参数,multipleTrailing 函数将sound 参数传递给它们。在调用方站点上,此参数可以具有任何名称(这里我在两个地方都给了它们sound),您可以访问这些值

    func multipleTrailing(scream sound: String, first closure1: (String) -> Void, second closure2: (String) -> Void) {
        closure1(sound)
        closure2(sound)
    }
    
    multipleTrailing(scream: "voala") { sound in
        print("\(sound), calling from closure1, omitting argument label \"first\"")
    } second: { sound in
        print("\(sound), calling from closure2, keeping argument label \"second\"")
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-07
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 2018-08-01
      相关资源
      最近更新 更多