swift4 函数

//  1. 带参数和返回值

func greetAgain(person: String) -> String {

        return "Hello again, " + person + "!"

    }

    print(greetAgain(person: "Anna"))

    // 打印 "Hello again, Anna!"

// 2.函数做参数

    func demo(str:String,addPrefix:(String)->String)->String{

        return addPrefix(str)

    }

    func addPrefix(str2:String)->String{

        return "prefix"+str2

    }

    

    print(demo(str: "123123", addPrefix: addPrefix))

    输出结果 prefix123123

// 3.函数可以带默认值

func logeName(name:String,phone:String = "123456")  {

        print("有默认值的函数:" , name , phone)

    }

self.logeName(name: "XJP")

        self.logeName(name: "XJP", phone: "15900514624")

输出:

有默认值的函数: XJP 123456

有默认值的函数: XJP 15900514624

// 4.嵌套函数

到目前为止本章中你所见到的所有函数都叫全局函数(global functions),它们定义在全局域中。你也可以把函数定义在别的函数体中,称作 嵌套函数(nested functions)

默认情况下,嵌套函数是对外界不可见的,但是可以被它们的外围函数(enclosing function)调用。一个外围函数也可以返回它的某一个嵌套函数,使得这个函数可以在其他域中被使用。

你可以用返回嵌套函数的方式重写 chooseStepFunction(backward:) 函数:

func chooseStepFunction(backward: Bool) -> (Int) -> Int {

        func stepForward(input: Int) -> Int { return input + 1 }

        func stepBackward(input: Int) -> Int { return input - 1 }

        return backward ? stepBackward : stepForward

    }

    var currentValue = -4

    let moveNearerToZero = chooseStepFunction(backward: currentValue > 0)

    // moveNearerToZero now refers to the nested stepForward() function

    while currentValue != 0 {

    print("\(currentValue)... ")

    currentValue = moveNearerToZero(currentValue)

    }

    print("zero!")

    // -4...

    // -3...

    // -2...

    // -1...

    // zero!

发布了49 篇原创文章 · 获赞 7 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_29680975/article/details/93189118