如何理解swift中的"first-class function"?

How to comprehend the "first-class function" in swift?

我正在阅读一些关于 swift 中函数式编程的书籍。看到有些书上说swift里的函数是"first-class function",搞不懂"first-class"是什么意思。有人可以回答我或给我一些示例代码吗?

函数是 Swift 中的第一个 class 公民,因为您可以将函数视为正常值。例如,您可以……

  • 将一个函数赋给一个局部变量,
  • 将一个函数作为参数传递给另一个函数,并且
  • return 函数中的函数。

它只是当前流行的花哨术语。这只是意味着您可以拥有一个包含对函数的引用的变量。

它一直在编程;在 C 和 Fortran 中,你有指向函数的指针。这两种语言的典型用法是将比较函数传递给排序函数,以便排序函数可以对任何数据类型进行排序。

在某些语言中,例如Java,看来您没有指向函数的指针,但是您确实有指向接口的指针。因此,您使用比较方法定义了一个 Comparable 接口,并将 Comparable 的实例传递给您的排序。

没什么新鲜的,只是对熟悉的概念混淆了术语。大概是为了尝试使该功能听起来新颖而性感。

请在this question中查看我的回答。我将再添加一个示例(请先检查该问题中的示例):

func operateMono( operand: String) -> (Double -> Double)?{
    switch operand{
    case "log10":
        return log
    case "log2":
        return log2
    case "sin":
        return sin
    case "cos":
        return cos
    default:
        return nil
    }
}

以及用法

var functionMono = operateMono("log10")
print ("log10 for 10 = \(functionMono!(10))")

functionMono = operateMono("log2")
print ("log2 for 10 = \(functionMono!(10))")

functionMono = operateMono("sin")
print ("sin 10 = \(functionMono!(10))")

functionMono = operateMono("cos")
print ("cos 10 = \(functionMono!(10))")