为什么函数调用需要参数名称,而不允许分配给变量的函数?

问题描述 投票:1回答:1

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

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个回答
4
投票

当您将方法指定为闭包时,您只需指定方法的参数类型和返回类型,因此闭包的类型实际上是qazxsw poi

在您的具体情况:(Types of arguments) -> Return type

如您所见,此闭包没有参数名称,您无法添加它们。因此,在调用闭包时添加参数标签将不起作用。

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

(Any) -> Void
© www.soinside.com 2019 - 2024. All rights reserved.