gpt4 book ai didi

将函数分配给变量时不允许使用 Swift 参数?

转载 作者:可可西里 更新时间:2023-11-01 02:13:32 24 4
gpt4 key购买 nike

Swift 3 默认要求函数调用中包含所有参数标签。然而,当一个函数被分配给一个变量(或常量),并且该变量传递参数时,参数标签是不必要的——甚至是不允许的。

例如,对于将两个 Int 参数(int1int2)分配给名为 varName 的变量的函数:

varName (1, 5) // will work, but
varName (int1: 1, int2: 5) //produces an error for extraneous argument labels.
  1. 我的理解正确吗?

  2. 这里不需要参数标签的理由是什么? (我找不到这方面的任何文档。)

最佳答案

  1. 是的。
  2. 参见 SE-0111 - Remove type system significance of function argument labels .

例子:

func foo(bar: Int, baz: String) {
print(bar, baz)
}

foo(bar: 123, baz: "abc") // Valid, prints: 123 abc

let x = foo //Inferred type: (Int, String) -> Void
x(123, "abc") // Valid, prints: 123 abc

let y: (bar: Int, baz: String) -> Void = foo // Invalid
// ERROR at line 10, col 9: function types cannot have argument label 'bar'; use '_' instead
// let y: (bar: Int, baz: String) -> Void
// ^
// _
// ERROR at line 10, col 19: function types cannot have argument label 'baz'; use '_' instead
// let y: (bar: Int, baz: String) -> Void
// ^
// _
y(bar: 123, baz: "abc") // Invalid
// ERROR at line 19, col 2: extraneous argument labels 'bar:baz:' in call
// y(bar: 123, baz: "abc") // 123 abc
// ^~~~~~ ~~~~~

关于将函数分配给变量时不允许使用 Swift 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40034913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com