函数类型
来源:互联网 发布:mahout推荐算法 编辑:程序博客网 时间:2024/06/07 03:27
函数类型
每一个函数都有特定的函数类型,可以充当参数类型和函数的返回类型。例如:
- func addTwoInts(a: Int, b: Int) -> Int {
- return a + b
- }
- func multiplyTwoInts(a: Int, b: Int) -> Int {
- return a * b
- }
这两个函数的类型是(Int, Int)->Int。可以解读为:"这个函数类型,它有两个int型的参数,并返回一个int类型的值。"
下面是另一个例子,不带任何参数或返回值的函数:
- func printHelloWorld() {
- println("hello, world")
- }
使用函数类型
在swift中您可以像任何其他类型一样的使用函数类型。例如,你可以定义一个常量或变量为一个函数类型,并指定适当的函数给该变量:
- var mathFunction: (Int, Int) -> Int = addTwoInts
该addTwoInts函数具有与mathFunction相同类型的变量,所以这个赋值在能通过swift的类型检查。
现在你可以调用指定的函数名称为mathFunction:
- println("Result: \(mathFunction(2, 3))")
- // prints "Result: 5"
- mathFunction = multiplyTwoInts
- println("Result: \(mathFunction(2, 3))")
- // 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!
0 0
- 函数类型
- 函数类型
- 函数类型
- 函数类型
- 函数类型
- 过程类型和函数类型
- 函数类型和参数类型
- 函数类型和函数指针类型
- typedef函数指针类型和函数类型
- 函数类型和函数指针类型
- 函数类型和函数指针类型
- C++ 函数类型(虚函数...)
- 函数指针与函数类型
- 函数类型+WINAPI+函数名
- 类型转换函数
- print类型函数详解
- 函数返回表类型
- oracle日期类型函数
- java获取当月天数,指定年月的天数,指定日期获取对应星期
- Eclipse for C/C++(六)调试
- android notification小结
- ubuntu java 问题汇集
- Java中的static关键字解析
- 函数类型
- 【62.89%】【BZOJ 1072】[SCOI2007]排列perm
- HTML网页制作基础第二弹
- Windows 10下 JDK 与 ADB 环境变量的配置
- python list
- Codeforces-340A-The Wall
- iOS应用上线——从证书申请到打包上线
- 验证码60秒倒计时
- HTML网页制作基础第三弹