函数类型

函数类型,第1张

概述函数类型 每一个函数都有特定的函数类型,可以充当参数类型和函数的返回类型。例如: func addTwoInts(a: Int, b: Int) -> Int { return a + b } func multiplyTwoInts(a: Int, b: Int) -> Int { ret 函数类型 每一个函数都有特定的函数类型,可以充当参数类型和函数的返回类型。例如:
              func addTwoInts(a: Int,b: Int) -> Int {         return a + b        }        func multiplyTwoInts(a: Int,255)"> return a * b        }       
这个例子中定义了两个简单的数学函数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" 与其他类型一样,你可以把它迅速推断成函数类型当你为常量或变量分配一个函数时:
纯文本复制
              let anotherMathFunction = addTwoInts         // anotherMathFunction is inferred to be of type (Int,Int) -> Int                   


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

以上是内存溢出为你收集整理的函数类型全部内容,希望文章能够帮你解决函数类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1072063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存