函数类型

前端之家收集整理的这篇文章主要介绍了函数类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

函数类型

每一个函数都有特定的函数类型,可以充当参数类型和函数的返回类型。例如:
   
   
  1. func addTwoInts(a: Int,b: Int) -> Int {
  2. return a + b
  3. }
  4. func multiplyTwoInts(a: Int,255)"> return a * b
  5. }
这个例子中定义了两个简单的数学函数addTwoInts和multiplyTwoInts。每个函数接受两个int值,并返回一个int值,执行适当的数学运算并返回结果。

这两个函数的类型是(Int,Int)->Int。可以解读为:"这个函数类型,它有两个int型的参数,并返回一个int类型的值。"
下面是另一个例子,不带任何参数或返回值的函数
func printHelloWorld() {
  • println("hello,world")
  • 这个函数的类型是()->(),或者"函数没有参数,并返回void。"函数不显式的指出一个返回值类型是void,在swift中相当于一个空元组,显示为()。

    使用函数类型

    在swift中您可以像任何其他类型一样的使用函数类型。例如,你可以定义一个常量或变量为一个函数类型,并指定适当的函数给该变量:
    var mathFunction: (Int,Int) -> Int = addTwoInts
  • 可以解读为:"定义一个名为mathFunction变量,该变量的类型为'一个函数,它接受两个int值,并返回一个int值。'设置这个新的变量来引用名为addTwoInts功能。"
    该addTwoInts函数具有与mathFunction相同类型的变量,所以这个赋值在能通过swift的类型检查。
    现在你可以调用指定的函数名称为mathFunction:
    println("Result: \(mathFunction(2,3))")
  • // prints "Result: 5"
  • 不同的函数相同的匹配类型可以分配给相同的变量,也同样的适用于非函数性类型:
    mathFunction = multiplyTwoInts
  • // prints "Result: 6"
  • 与其他类型一样,你可以把它迅速推断成函数类型当你为常量或变量分配一个函数时:
    纯文本复制
       
       
    1. let anotherMathFunction = addTwoInts
    2. // anotherMathFunction is inferred to be of type (Int,Int) -> Int


    嵌套函数

    迄今为止所有你在本章中遇到函数都是全局函数,在全局范围内定义。其实你还可以在其他函数中定义函数,被称为嵌套函数
    嵌套函数默认对外界是隐藏的,但仍然可以调用和使用其内部的函数。内部函数也可以返回一个嵌套函数,允许在嵌套函数内的另一个范围内使用。
    你可以重写上面的chooseStepFunction例子使用并返回嵌套函数
        
        
    1. func chooseStepFunction(backwards: Bool) -> (Int) -> Int {
    2. func stepForward(input: Int) -> Int {
    3. return input + 1
    4. }
    5. func stepBackward(input: Int) -> Int {
    6. return input - 1
    7. return backwards ? stepBackward : stepForward
    8. }
    9. var currentValue = -4
    10. let moveNearerToZero = chooseStepFunction(currentValue > 0)
    11. // moveNearerToZero now refers to the nested stepForward() function
    12. while currentValue != 0 {
    13. println("\(currentValue)... ")
    14. currentValue = moveNearerToZero(currentValue)
    15. println("zero!")
    16. // -4...
    17. // -3...
    18. // -2...
    19. // -1...
    20. // zero!

    猜你在找的Swift相关文章