函数参数名称不符合文档

根据手册:

函数参数名称

这些参数名称仅用于函数本身的内部,在调用函数时不能使用。 这些types的参数名称称为本地参数名称,因为它们只能在函数体内使用。

join("hello", "world", ", ") func join(s1: String, s2: String, joiner: String) -> String { return s1 + joiner + s2 } 

但是代码不能编译:

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

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

  join("hello") func join(s1: String) -> String { return s1 } 

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

  join(s1: "hello") 

外部参数标签's1:'in call join(s1:“hello”)

阅读涵盖function的文档时是否错过任何内容?

function和方法的行为是不同的。

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

你可以想到的方法默认为:

 func method(_ arg1: AnyObject?, #arg2: AnyObject?, #arg3: AnyObject?) { } 

你总是可以明确说明你想如何处理参数

 func join(_ s1: String, _ s2: String, _ joiner: String) -> String { return s1 + joiner + s2 } 

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

具体来说,Swift默认在方法中给第一个参数名称一个本地参数名称,并且默认给出第二个和后续参数名称本地和外部参数名称。 这个约定匹配你在编写Objective-C方法时熟悉的典型的命名和调用约定,并且使expression式方法调用不需要限定你的参数名称。

我认为他们这样做,以便方法的默认行为将匹配在objective-c中的,但你可以直接控制它通过设置外部参数的名称

(请注意,如果您不希望函数的调用者命名参数,则可以使用_作为外部参数名称)

还要注意:对于裸函数,它和方法不一样