您的位置:首页 > 其它

147,函数

2015-12-26 16:20 162 查看

1,函数的定义格式

func 函数名(形参列表)->返回值类型{
//函数体
}
形参列表格式:

形参名1:形参类型1,形参名2:形参类型2,...

func Calcu(value1:Int,value2:Int)->Int{

return value1 + value2;

}

2,函数的细节

>没有返回值的3种写法

func calcu()->Void{

print("没有返回值的3种写法");

}

func calcu()->(){

print("没有返回值的3种写法");

}

func calcu(){

print("没有返回值的3种写法");

}
>一个函数如果没有形参,函数名后面的小括号也不能省略

>一个函数可以返回元组数据

func find(id:Int) -> (name:String,age:Int){

if id > 0{

return ("ljs",10);

}else{

return ("nobody",0);

}

}

var people = find(2);

print("name =
\(people.name),age =
\(people.age)");

//name = ljs,age = 10

3,外部参数名

>外部参数名可以在调用函数时,提醒每个参数的含义,格式如下:

func 函数名(外部参数名 形式参数名:形式参数类型)->返回值类型{
//函数体
}

func sum(number1 num1:Int,number2 num2:Int) ->
Int{

return num1 + num2;

}

sum(number1: 10, number2:
30);

//40

注:一旦定义了外部参数名,在调用的时候,就必须加上外部参数名

4,默认值

>在定义函数时,可以给形参指定一个默认值

func setPersonInfo(name:String,age:Int =
0){

print("name =
\(name),age =
\(age)");

}

setPersonInfo("ljs");

//name = ljs,age = 0
>带有默认参数值的形参,Swift会自动生成一个跟形参名相同的外部参数名

func setPersonInfo(name:String,age:Int =
0){

print("name =
\(name),age =
\(age)");

}

setPersonInfo("ljs",age:10);

//name = ljs,age = 0

>在带有默认参数值的参数名前,加下划线_,就可以忽略掉外部参数名

func setPersonInfo(name:String,_ age:Int =
0){

print("name =
\(name),age =
\(age)");

}

setPersonInfo("ljs",10);

//name = ljs,age = 0

5,函数形参中的变量与常量

>默认情况下,函数的形式参数都是常量,不能修改

>若要修改函数的形式参数,必须在参数名前面加var,将其定义为变量

func setPersonInfo(var name:String,
_ age:Int =
0){

//age = 100; age是常量不能改变,会报错

name = "abc";//name已经是变量,可以改变

print("name =
\(name),age =
\(age)");

}

setPersonInfo("ljs",10);

//name = adc,age = 10

6,输出输入参数

>在Swift中,利用输入输出参数,也可以在函数内部修改外部变量的值。在参数名前面,加一个inout关键字

var num:Int =
10;

func changeNum(inout value:Int){

value = 20;

}

changeNum(&num);

print("num = "+String(num));

//20

注:输入输出参数的使用注意

>传递实参时,必须在实参的前面加入&

>不能传入常量或字面量(比如10)作为参数值

>输入输出参数不能有默认值

>输入输出参数不能有可变参数

>输入输出参数不能使用let,var修饰,因为inout跟let,var不能共存
7,面试题

>如何在不使用第三方变量的情况下,交换两个值

var num1:Int =
10;

var num2:Int =
20;

func exchange(inout value1:Int,inout value2:Int)->Void{

value1 = value1 + value2;

value2 = value1 - value2;

value1 = value1 - value2;

}

exchange(&num1, value2: &num2);

print(num1,num2);

//20 10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: