147,函数

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










你可能感兴趣的:(Swift)