import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
/**
定义函数的时候可以为每个参数定义默认值,这样调用这个函数时可以略去这个参数。
将带有默认值的参数放在函数参数列表的最后。
这样可以保证在调用函数时,非默认参数的顺序是一致的。
下例是另一个版本的 join 函数,其中 joiner 参数有了默认值:
*/
func join(string s1:String,toString s2:String = "apple",
withJoiner joiner:String = " ") ->String{
return s1 + joiner + s2
}
/**
如果joiner被赋值,函数使用这个值连接两个字符串
*/
print(join(string: "hello", toString: "Sam", withJoiner: "-"))
/**
如果joiner没有被赋值,函数使用默认的" "来连接两个字符串
*/
print(join(string: "hello", toString: "Danny"))
print(join(string: "banana"));
print(join(string: "hello", toString: "asd"))
func plusString(s1:String,s2:String,plusString:String = " ")->String{
return s1 + plusString + s2
}
print(plusString("double", s2: "kill"))
print(plusString("tripple", s2: "kill", plusString: "---"))
/**
函数参数默认是常量。
在函数体内是不可以修改的,
所以,试图在函数体中更改参数值将会导致编译错误。
但是,有时候,传入参数的变量值有副本将是很有用的。
指定一个或多个参数为变量参数,来避免在函数中定义新的变量。
变量参数不是常量,在函数体中,它是可修改副本。
通过在参数名前加关键字 var 来定义变量参数:
这样 我们就可以在函数体内来修改我们的参数
对变量参数的修改在函数调用结束后就结束了,对于函数体外是不可见的。
变量参数的生命周期在函数调用过程中
*/
func morning(var time:String,var name:String,joiner:String)->String{
print(time)
time = "good afternoon"
name = "Sam"
return time + joiner + name
}
print(morning("good morning", name: "Jenny", joiner: "!"))
}
}