函数如果带有参数,
func funcA(参数){ }
,那么每个参数都有一个外部参数名和一个内部参数名。
内部参数名
:在该函数内部使用。
外部参数名
: 在内部参数名 前面的参数。外部参数名用于在函数调用时传递给函数的参数。函数的某个参数的外部参数名只要不为_
,例如 author不为_,(func funcA(author param1:String = "bin){ }
),那么调用者的该参数前面必须写 外部参数名funcA(author: "CoderZb")
例子
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
funcA(author: "CoderZb", LuckyNumbers: 15,hobby:"sing")// 写外部参数名author 、LuckyNumbers、hobby
funcB(author: "zhangsan", LuckyNumbers: 18,hobby:"jump")// 写外部参数名author 、LuckyNumbers、hobby
funcC("summer",7,"running")// 不用写外部参数名
funcD("stone",LuckyNumbers:28,"eating")
funcE(author:"rose",11,hobby:"swimming")
}
// 外部参数名和内部参数名不一样。调用者必须写上外部参数名
func funcA(author param1:String = "bin",LuckyNumbers param2:Int = 0,hobby param3:String = "codeing"){// param1默认值为"bin",param2默认值为0
print("funcA---author为 \(param1),LuckyNumbers为 \(param2),hobby为 \(param3)")
}
// 外部参数名和内部参数名一样,所以合二为一即可。调用者也必须写上这个合二为一的参数名
func funcB(author :String = "bin",LuckyNumbers :Int = 0,hobby :String = "codeing"){
print("funcB---author为 \(author),LuckyNumbers为 \(LuckyNumbers),hobby为 \(hobby)")
}
// 外部参数名为下划线 ,那么调用者不需要写外部参数名
func funcC(_ param1:String,_ param2:Int = 0,_ param3:String = ""){
print("funcC---author为 \(param1),LuckyNumbers为 \(param2),hobby为 \(param3)")
}
// funcD函数的第一个参数和第三个参数的外部参数名都为下划线,所以调用者的第一个参数和第三个参数都不用写外部参数名
// funcD函数的第二个参数有外部参数名,也有内部参数名,所以调用者的第二个参数写外部参数名
func funcD(_ param1:String,LuckyNumbers param2:Int = 0, _ param3:String){
print("funcD---author为 \(param1),LuckyNumbers为 \(param2),hobby为 \(param3)")
}
// funcE函数的第一个参数外部参数名和内部参数名一样,所以调用者的第一个参数写外部参数名
// funcE函数的第二个参数外部参数名为下划线,所以调用者的第二个参数不用写外部参数名
// funcE函数的第三个参数的外部参数名和内部参数名不一样,所以调用者的第三个参数写外部参数名
func funcE(author :String,_ param2:Int,hobby param3:String = "coding"){
print("funcE---author为 \(author),LuckyNumbers为 \(param2),hobby为 \(param3)")
}
}
打印内容如下
funcA---author为 CoderZb,LuckyNumbers为 15,hobby为 sing
funcB---author为 zhangsan,LuckyNumbers为 18,hobby为 jump
funcC---author为 summer,LuckyNumbers为 7,hobby为 running
funcD---author为 stone,LuckyNumbers为 28,hobby为 eating
funcE---author为 rose,LuckyNumbers为 11,hobby为 swimming
总结
只要函数的某个参数的外部参数名 用下划线代替了
func funcC(_ param2:Int){}
,那么调用者就不需要在参数前面写外部参数名funcC(7)
,其余的情况调用者都必须写外部参数名。
换句话理解就是:只要函数的某个参数的外部参数名和内部参数名一样(即合二为一func funcE(author :String){}
)
或者
外部参数名和内部参数名不一样func funcA(author param1:String){}
,那么调用者就需要在参数前面写外部参数名funcA(author: "CoderZb")
。
- 写的有问题的话,请批评指正,改之。
网友评论