swift学习记录(函数--输入输出参数)

来源:互联网 发布:scival数据库 编辑:程序博客网 时间:2024/04/16 22:16

在输入输出参数之前,先说说变量参数和常量参数

变量可以修改,常量不可以修改,这是众所周知的事实。

函数中的参数,默认是 常量,所以想在函数体内修改参数的值,就会出现编译错误。所以,在定义函数时,需要将参数定义为变量

变量参数的定义方式:

定义变量参数的方法就是在参数名 前 加上 变量 修饰符 var 

func sum(var num1:Int, num2:Int)->Int{    num1 = 10    return num1+num2}print(sum(100, num2: 2))//12

变量参数只能在函数体内修改,如果我们让在函数体修改的参数,在函数体外任然生效。这时我们就需要定义输入输出函数

输入输出函数定义方式:

定义函数时,在参数名前加上 inout 关键字,这样我们就定义了一个输入输出参数

代码事例:

var boyName = "张大三"var girlName = "李小七"func exchange(inout boy:String ,inout girl:String){    let name = boy    boy = girl    girl = name}exchange(&boyName, girl: &girlName)print("boyName is \(boyName) and girlName is \(girlName)")//boyName is 李小七 and girlName is 张大三

通过没有返回值的 exchange 函数,将boyName 和 girlName 交换 。在调用函数之后再去打印boyName和girlName。发现在函数体内修改的参数,在函数体外依然生效。

需要注意的是,在调用含有输入输出参数的 函数 时,需要实参前加 & 。表示这个值可以被函数修改

注意:输入输出参数不能有默认值,不能是可变参数。如果一个参数被 inout 标记,这个参数就不能被 var 或 let 标记。

输入输出参数只是,实现函数体内修改 参数值,在函数体外依然生效的方式之一。我们还可以通过别的方式实现。例如:

var boyName = "张大三"var girlName = "李小七"func exchange(boy:String ,girl:String){    girlName = boy    boyName = girl}exchange(boyName, girl: girlName)print("boyName is \(boyName) and girlName is \(girlName)")//boyName is 李小七 and girlName is 张大三

0 0
原创粉丝点击