功能参数名称不符合文档

Lau*_*ent 0 ios swift

根据手册:

功能参数名称

这些参数名称仅在函数本体中使用,并且在调用函数时不能使用.这些参数名称称为本地参数名称,因为它们仅可在函数体内使用.

    join("hello", "world", ", ")


func join(s1: String, s2: String, joiner: String) -> String {
    return s1 + joiner + s2
}
Run Code Online (Sandbox Code Playgroud)

但是代码没有编译:

错误:缺少参数标签's2:joiner:'in call join("hello","world",",")^ s2:joiner:

只有当我尝试使用一个参数时,它才成为可选项

    join("hello")


func join(s1: String) -> String {
    return s1
}
Run Code Online (Sandbox Code Playgroud)

更令人讨厌的是,根本不允许使用第一个:

    join(s1: "hello")
Run Code Online (Sandbox Code Playgroud)

无关的参数标签's1:'在调用join(s1:"hello")中

在阅读涵盖功能的文档时,我是否遗漏了什么?

Jef*_*mas 6

函数和方法之间的行为是不同的.

对于方法,默认行为是使用本地名称作为第一个之后的所有参数的外部名称.

您可以将方法默认为:

func method(_ arg1: AnyObject?, #arg2: AnyObject?, #arg3: AnyObject?) {
}
Run Code Online (Sandbox Code Playgroud)

您始终可以明确说明要如何处理参数

func join(_ s1: String, _ s2: String, _ joiner: String) -> String {
    return s1 + joiner + s2
}
Run Code Online (Sandbox Code Playgroud)

Swift编程语言| 语言指南| 方法

具体来说,默认情况下,Swift在方法中为第一个参数名称提供本地参数名称,默认情况下为第二个和后续参数名称提供本地和外部参数名称.此约定与您在编写Objective-C方法时熟悉的典型命名和调用约定相匹配,并且无需限定参数名称即可进行表达式方法调用.