根据手册:
功能参数名称
这些参数名称仅在函数本体中使用,并且在调用函数时不能使用.这些参数名称称为本地参数名称,因为它们仅可在函数体内使用.
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")中
在阅读涵盖功能的文档时,我是否遗漏了什么?
函数和方法之间的行为是不同的.
对于方法,默认行为是使用本地名称作为第一个之后的所有参数的外部名称.
您可以将方法默认为:
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在方法中为第一个参数名称提供本地参数名称,默认情况下为第二个和后续参数名称提供本地和外部参数名称.此约定与您在编写Objective-C方法时熟悉的典型命名和调用约定相匹配,并且无需限定参数名称即可进行表达式方法调用.
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |