Ios 函数参数名称don';不要按照文件行事
根据手册: 函数参数名 这些参数名仅在函数本身的主体中使用,在调用函数时不能使用。这些类型的参数名称为本地参数名,因为它们仅可在函数体中使用Ios 函数参数名称don';不要按照文件行事,ios,swift,Ios,Swift,根据手册: 函数参数名 这些参数名仅在函数本身的主体中使用,在调用函数时不能使用。这些类型的参数名称为本地参数名,因为它们仅可在函数体中使用 join("hello", "world", ", ") func join(s1: String, s2: String, joiner: String) -> String { return s1 + joiner + s2 } 但是代码没有编译: 错误:调用中缺少参数标签“s2:joiner:” 加入(“你好”,“世界”,
join("hello", "world", ", ")
func join(s1: String, s2: String, joiner: String) -> String {
return s1 + joiner + s2
}
但是代码没有编译:
错误:调用中缺少参数标签“s2:joiner:”
加入(“你好”,“世界”,“世界”)
^
s2:细木工:
只有当我尝试使用一个参数时,它才成为可选参数
join("hello")
func join(s1: String) -> String {
return s1
}
更令人恼火的是,甚至不允许使用第一个:
join(s1: "hello")
调用中的无关参数标签“s1:”
加入(s1:“你好”)
在阅读有关函数的文档时,我是否遗漏了任何内容?我认为他们这样做是为了使方法的默认行为与objective-c中的方法相匹配,但您可以通过 (请注意,如果不希望函数的调用者命名参数,则可以使用
\uu
作为外部参数名)
还要注意:它对裸函数的工作方式与对方法的工作方式不同函数和方法的行为不同 对于方法,默认行为是使用本地名称作为第一个参数之后所有参数的外部名称 您可以考虑默认为以下的方法:
func method(_ arg1: AnyObject?, #arg2: AnyObject?, #arg3: AnyObject?) {
}
您始终可以显式地说明如何处理参数
func join(_ s1: String, _ s2: String, _ joiner: String) -> String {
return s1 + joiner + s2
}
具体来说,Swift默认为方法中的第一个参数名提供本地参数名,默认为第二个和后续参数名提供本地和外部参数名。此约定与您在编写Objective-C方法时熟悉的典型命名和调用约定相匹配,并允许进行表达性方法调用,而无需限定参数名称
将第一个参数设置为具有外部名称——即,使其行为类似于第二个参数,等等——只需在参数名称前面加一个#。