【问题标题】:Why are argument names required for function calls, and not allowed for functions assigned to variables?为什么函数调用需要参数名称,而分配给变量的函数却不允许?
【发布时间】:2019-08-26 14:52:22
【问题描述】:

如果我有以下代码,为什么我不需要在函数调用中使用参数名称,而是在尝试添加它们时抛出错误?

func foo(bar: Any) {}
var faz = foo

foo(1) // Missing argument label 'bar:' in call
foo(bar: 1)
faz(1)
faz(bar: 1) // Extraneous argument label 'bar:' in call

【问题讨论】:

    标签: swift function syntax arguments


    【解决方案1】:

    当你将你的方法指定为闭包时,你只需指定方法的参数类型和返回类型,所以你的闭包类型实际上是(Types of arguments) -> Return type

    在您的具体情况下:(Any) -> Void

    如您所见,此闭包没有参数名称,您无法添加它们。所以在调用闭包时添加参数标签是行不通的。

    但是,您可以在声明闭包时命名参数,然后您可以在闭包范围内使用它...类似于声明函数

    faz = { bar in 
        ... // you can work with bar of type `Any`
    }
    

    【讨论】:

      猜你喜欢
      • 2014-07-25
      • 2015-12-26
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      相关资源
      最近更新 更多