使用外部参数名
如果我们定义的函数有很多参数,他们又具有相同的数据类型,如果没有具体的说明,调用者很难知道参数的含义是什么,如:
func myname(name:String) -> String { return "我叫\(name)"; } println(myname("liulibo"));
name是myname函数的一个局部变量,我们还可以为每个参数提供一个可以在函数外部使用的名称,称为外部参数, 这个外部参数IDE会自动为你生成在传参的左边,提示参数的作用
func myname(INSERT_NAME name:String) -> String { return "我叫\(name)"; } var result = myname(INSERT_NAME: <#String#>);
使用#替代外部参数名
我们也可以使用#将内部变量定义为外部参数,这样更加简便
func myname(#name:String) -> String { return "我叫\(name)"; } var result = myname(name: <#String#>)
参数的默认值
我们在定义函数的时候可以为参数设置一个默认值,当调用函数的时候可以忽略这个参数
func myname(#name:String = "liulibo") -> String { return "我叫\(name)"; } var result = myname() println(result);
可变参数
Swift中函数的参数可以变化,可以接受不确定数量的输入类型参数,有点像是传递一个数组,我们可以在参数类型后添加…来指示这是可变参数
func myname(name:String...) -> String { var result = "myname is 1v20"; for one in name { result += " and "+one; } return result; } var result = myname("aaa","bbb") println(result); //输出 "myname is 1v20 and aaa and bbb"
参数的传递引用
参数传递分两种,值类型和引用类型,值类型给函数传递的是参数的一个副本,这样在函数的调用过程找那个不会影响原始参数,引用类型是把本身数据传递过去,这样在函数的调用过程中会影响原始参数
如果我们要将一个值类型的参数做为引用传递,可以Swift提供的inout关键字
func myname(inout name:String) { name = "new "+name; } var name = "liulibo"; myname(&name); println(name); //输出 new liulibo