函数

完整的 有参数 有返回值

func frist(name:String) -> ObjCBool {

    if name == "slc" {

        return true

        

    }else{

        return false

    }

}

 

func second(sName name:String,sAge age:Int) -> String {

    if age>10 {

        return "slc"

    }

    return "slc"

}

 

 

 

//没有返回值

func noReturn(age:Int){

    

    _ = age + 1

    

}

 

 

 

//没有参数 有返回值

func noPrama() -> String{

    

    return ""

    

}

 

 

 

 

//函数调用

 

func use(name:String,rellay:Bool) {

    if rellay {

            

         frist(name: "slc")

        second(sName: "slc", sAge: 10)

    }else{

        noReturn(age: 1)

    }

}

 

 

 

//可变形式参数 一个函数最多只能有一个可变形式参数。

func artiction(numbers:Double...) -> Double{

    var total:Double = 10.0;

    for number in numbers {

        

        total += number

    }

    

    

//    numbers 实际上一个double类型的数组

    return total/Double(numbers.count)

}

 

 

artiction(numbers: 1.0,2.0,3.2,4.3,5.0)

 

 

 

 

 

//输入输出形式参数 可以改变输入函数的值

func change(_ a: inout Int ,_ b: inout Int){

    let c:Int = a

    a = b

    b = c

    

}

 

 

var a:Int = 2

var b:Int = 3

 

 

change(&a, &b)

 

print("a =(a),b = (b)")

 

 

 

//你可以像使用 Swift 中的其他类型一样使用函数类型。例如,你可以给一个常量或变量定义一个函数类型,并且为变量指定一个相应的函数。

 

var useCopy:(String,Int) -> String = second

 

 

 

//你可以利用使用一个函数的类型例如 (Int, Int) -> Int作为其他函数的形式参数类型。这允许你预留函数的部分实现从而让函数的调用者在调用函数的时候提供。

func useFunc(_ second:(String,Int) -> Int ,length:String) -> String

{

    

    print("(second("s", 1))")

    

    return "slc"

}

 

 

 

//你可以利用函数的类型作为另一个函数的返回类型。写法是在函数的返回箭头( ->)后立即写一个完整的函数类型。

func backOne() -> Int{

    return 1

}

 

func backTwo() -> Int {

    return 2

}

 

 

func choseFunc(back:Bool) -> () -> Int{

    

    if back {

        return backOne

    }else{

        return backTwo

    }

    

}

 

 

//内嵌函数

func nextStep(step:String) -> (String) ->String{

    

    func oneStep(stepone:String) -> String{

        return "one"

    }

    

    func TwoStep(steptwo:String) -> String{

        return "Two"

    }

    

    

    return  (step == "one") ? oneStep:TwoStep

}

 

 

 

原文地址:https://www.cnblogs.com/slc-lover/p/5660114.html