swift中的"函数是一流的类型"?

Anu*_*uni 7 function first-class-functions swift

关于第一类函数的小知识是它支持传递函数作为参数,我们也可以将它们作为另一个函数中的值返回...我是Swift编程语言的新手,任何人都可以用一个例子来详细说明.

Kir*_*ins 12

一个非常简单的示例来演示此行为:

func functionA() {
    println("Hello by functionA")
}

func executeFunction(function: () -> ()) {
    function()
}

executeFunction(functionA)
Run Code Online (Sandbox Code Playgroud)


Wil*_*aan 5

一流函数是可以返回另一个函数的函数。例如:

func operate( operand: String) -> ((Double, Double) -> Double)?{

    func add(a: Double, b: Double) -> Double {
        return a + b
    }

    func min(a: Double, b: Double) -> Double{
        return a - b
    }

    func multi(a: Double, b: Double) -> Double {
        return a * b
    }

    func div (a: Double, b: Double) -> Double{
        return a / b
    }

    switch operand{
    case "+":
        return add
    case "-":
        return min
    case "*":
        return multi
    case "/":
        return div
    default:
        return nil
    }
}
Run Code Online (Sandbox Code Playgroud)

该函数operate返回一个以两个 double 作为参数并返回一个 double 的函数。

该函数的用法是:

var function = operate("+")
print(" 3 + 4 = \(function!(3,4))")

function = operate("-")
print(" 3 - 4 = \(function!(3,4))")

function = operate("*")
print(" 3 * 4 = \(function!(3,4))")

function = operate("/")
print(" 3 / 4 = \(function!(3,4))")
Run Code Online (Sandbox Code Playgroud)

当您不关心函数的实现时,使用 First-Class 函数返回这些函数会变得有益。另外,有时,您不负责开发(或未经授权)诸如 、 之类的add功能min。因此,有人会为您开发一个返回这些函数的一流函数,而您有责任继续......