函数中的参数传递

使用外部参数名

如果我们定义的函数有很多参数,他们又具有相同的数据类型,如果没有具体的说明,调用者很难知道参数的含义是什么,:

func myname(name:String) -> String {
    return "我叫\(name)";
}

println(myname("liulibo"));

 

namemyname函数的一个局部变量,我们还可以为每个参数提供一个可以在函数外部使用的名称,称为外部参数, 这个外部参数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