zoukankan      html  css  js  c++  java
  • 函数类型(Function Types):函数类型和其他类型一样

    函数类型(Function Types)

    每个函数都有种特定的函数类型,由函数的参数类型和返回类型组成。

    例如:

    这个例子中定义了两个简单的数学函数:addTwoInts 和 multiplyTwoInts。这两个函数都传入两个 Int类型, 返回一个合适的Int值。

    这两个函数的类型是 (Int, Int) -> Int,可以读作“这个函数类型,它有两个 Int 型的参数并返回一个 Int型的值。”。

    下面是另一个例子,一个没有参数,也没有返回值的函数:

    这个函数的类型是:() -> (),或者叫“没有参数,并返回 Void 类型的函数。”。没有指定返回类型的函数总返回 Void。在Swift中,Void 与空的元组是一样的。

    使用函数类型(Using Function Types)

    在Swift中,使用函数类型就像使用其他类型一样。例如,你可以定义一个常量或变量,它的类型是函数,并且可以幅值为一个函数:

    这个可以读作:

    “定义一个叫做 mathFunction 的变量,类型是‘一个有两个 Int 型的参数并返回一个 Int 型的值的函数’,并让这个新变量指向 addTwoInts 函数”。

    addTwoInts 和 mathFunction 有同样的类型,所以这个赋值过程在 Swift 类型检查中是允许的。

    现在,你可以用 mathFunction 来调用被赋值的函数了:

    有相同匹配类型的不同函数可以被赋值给同一个变量,就像非函数类型的变量一样:

    就像其他类型一样,当赋值一个函数给常量或变量时,你可以让 Swift 来推测其函数类型:

    函数类型作为参数类型(Function Types as Parameter Types)

    你可以用(Int, Int) -> Int这样的函数类型作为另一个函数的参数类型。这样你可以将函数的一部分实现交由给函数的调用者。

    下面是另一个例子,正如上面的函数一样,同样是输出某种数学运算结果:

    这个例子定义了 printMathResult 函数,它有三个参数:第一个参数叫 mathFunction,类型是(Int, Int) -> Int,你可以传入任何这种类型的函数;第二个和第三个参数叫 a 和 b,它们的类型都是 Int,这两个值作为已给的函数的输入值。

    当 printMathResult 被调用时,它被传入 addTwoInts 函数和整数35。它用传入35调用 addTwoInts,并输出结果:8

    printMathResult 函数的作用就是输出另一个合适类型的数学函数的调用结果。它不关心传入函数是如何实现的,它只关心这个传入的函数类型是正确的。这使得 printMathResult 可以以一种类型安全(type-safe)的方式来保证传入函数的调用是正确的。

    函数类型作为返回类型(Function Type as Return Types)

    你可以用函数类型作为另一个函数的返回类型。你需要做的是在返回箭头(->)后写一个完整的函数类型。

    下面的这个例子中定义了两个简单函数,分别是 stepForward 和stepBackwardstepForward 函数返回一个比输入值大一的值。stepBackward 函数返回一个比输入值小一的值。这两个函数的类型都是 (Int) -> Int

    下面这个叫做 chooseStepFunction 的函数,它的返回类型是 (Int) -> Int 的函数。chooseStepFunction 根据布尔值 backwards 来返回 stepForward 函数或 stepBackward 函数:

    http://yige.org/swift/functions.php
  • 相关阅读:
    DExpose2:Windows 下窗体平铺预览
    第二章 随机变量及其分布3
    资源文件分享到QQ群共享里的方法
    第三章 多维随机变量及其分布1
    RegexBuddy
    第四章 随机变量的数字特征3
    html 表格排序
    关于微软自带的身份和角色验证
    学习中小型软件开发步骤
    学习路线图
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10197529.html
Copyright © 2011-2022 走看看