swift学习笔记4-函数

//函数

1.函数的定义与使用

//定义格式 func 函数名(参数类型:参数名,参数类型:参数名……) -> 返回类型

func greet(){

    print("hello,swift")

}

greet()//hello.swift



func getMax(num1:Int,num2:Int) -> Int{

    return max(num1, num2)

}

getMax(num1: 1, num2: -1)//1

2.为函数的参数设置默认值

func isPass(num1:Int,num2:Int=60){

    if(num1>=num2){

        print("pass")

    }else{

        print("fail")

    }

}

//使用带默认参数的函数时,传参数时,可以忽略带参数的参数。

isPass(num1: 78)//pass

isPass(num1: 45,num2:10 )//fail

3.设置可变的函数参数数量

func getSum(nums:Double...) -> Double{//使用...添加在变量类型后面即可定义可变参数,表示该类型的参数数量不确定。一个函数最多只能

    var sum:Double = 0                //使用一个可变参数且可变参数只能位于其他参数之后

    for temp in nums{

        sum += temp

    }

    return sum

}

getSum()//0

getSum(nums: 24,151,1.2)//176.2

4.函数作为参数

func add(num1:Int,num2:Int) -> Int{

    return num1+num2

}

func operationAdd(function:(Int,Int)->Int,num1:Int,num2:Int){

    print("sum=\(function(num1,num2))")

}

operationAdd(function: add, num1: 7, num2: 8) //15

5.函数作为返回类型

func getBigger(num1:Int,num2:Int) -> Int{

    return max(num1, num2)

}

func getSmaller(num1:Int,num2:Int) -> Int{

    return min(num1, num2)

}

func choose(mychoose:Bool) -> (Int,Int) -> Int{ //返回一个函数,函数具有两个int的参数,并且返回类型为int

    return mychoose ? getBigger:getSmaller

}

let mychoose = choose(mychoose: true)

mychoose(5,1)//5

6.元组作为返回类型

func getStudent() ->(name:String,sno:String){

    let name = "zhangsan"

    let sno = "110"

    return (name,sno)

}

getStudent()//{name:"zhangsan",sno:"110"}

7.使用函数类型

//使用函数类型和使用其他类型类似。比如声明一个串类型的变量为var myString:String,相似的,声明一个函数类型的变量格式为 变量类型 变量名:函数(类型,)该变量的类型便为其返回值类型。

func getInstance(num1:Int,num2:Int) -> Int{

    return num1 - num2

}

var function:(Int,Int) -> Int //定义了一个函数类型的变量,该类型为两个整型参数并返回整型的函数

function = getInstance//将该函数变量指向函数getinstanc

var result = function(5,4)//1

function = getBigger//将函数变量指向函数getBigger

result = function(0,7)//7


8.函数的输入输出参数

//函数的参数默认是常量,因而在函数体内是不能对参数的值进行修改的,如果需要在函数体内修改参数的值,并且这些修改在函数结束调用时仍然存在,需要在参数类型的前面添加inout标识,并在调用时在参数前面加上&

func changNumber( num1:inout Int, num2:inout Int){

    let temp = num1

    num1 = num2

    num2 = temp

}

var num1 = 1

var num2 = 2

changNumber(num1: &num1,num2: &num2)

print("num1=\(num1),num2=\(num2)") //num1=2,num2=1

9.函数的嵌套

//将一个函数写在其他函数体内,便称为函数的嵌套,这样实现了函数的封装,其作用也不言而喻了

func chooseNumber(needBigger:Bool,num1:Int,num2:Int){

    func getBigger(num1: Int, num2: Int){

        print((num1>num2) ? num1:num2)

    }

    func getSmaller(num1: Int, num2: Int){

        print((num1<num2) ? num1:num2)

    }

    needBigger ? getBigger(num1:num1,num2:num2):getSmaller(num1: num1, num2: num2)

}

chooseNumber(needBigger: false, num1: 7, num2: -7) //-7

10.函数的递归用法

//在函数体中直接或间接的调用自己,称之为函数的递归调用。

func total(num:Int) -> Int {

    if(num<=1){

        return 1

    }else{

        return total(num: num-2) + total(num:num-1)

    }

}

total(num: 5) //8

11.常用的内置函数

//swift语言中自带的函数,可以直接调用

abs(-10)//求绝对值

max(4,5)//求最大值

min(2,4,0,15,0.5)//求最小值

for i in (1...10).filter({$0 % 2 == 0}){

    print(i)

}//使用filter进行条件筛选

for i in (1...10).map({$0*3}){

    print(i)

}//使用map对数组进行转换

let getResult = (1...4).reduce(0, +)//10 使用reduce对数组进行计算操作并获得一个值


猜你喜欢

转载自blog.csdn.net/qq_36134369/article/details/78637013