如何理解swift中的“一级功能”?

如何理解swift中的“一级功能”?,swift,first-class-functions,Swift,First Class Functions,我正在读一些关于swift函数式编程的书。当我看到一些书说swift中的函数是一流函数时,我搞不清楚一流的含义是什么。有谁能回答我或给我一些示例代码吗?函数在Swift中是一等公民,因为你可以像对待普通值一样对待函数。例如,你可以 将函数赋给局部变量, 将一个函数作为参数传递给另一个函数,并且 从函数返回函数。 这只是目前流行的花哨术语。它只是意味着你可以有一个变量来保存一个函数的引用 它一直在编程中;在C和Fortran中,有指向函数的指针。这两种语言的典型用法是将比较函数传递给排序函数,以便

我正在读一些关于swift函数式编程的书。当我看到一些书说swift中的函数是一流函数时,我搞不清楚一流的含义是什么。有谁能回答我或给我一些示例代码吗?

函数在Swift中是一等公民,因为你可以像对待普通值一样对待函数。例如,你可以

将函数赋给局部变量, 将一个函数作为参数传递给另一个函数,并且 从函数返回函数。
这只是目前流行的花哨术语。它只是意味着你可以有一个变量来保存一个函数的引用

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

在某些语言中,例如Java,似乎没有指向函数的指针,但有指向接口的指针。因此,您可以使用compare方法定义一个Comparable接口,并将Comparable的实例传递给sort

没有什么新的,只是一个熟悉的概念的术语混乱。想必是想让这一功能听起来新颖性感。

请看我的答案。我将再添加一个示例,请首先检查该问题中的示例:

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))")

我认为objective-c中的块,我们也可以将一个块分配给一个局部变量,并将它作为一个参数传递给另一个函数,我能认为objective-c中的块也是一流的吗?是的,objective-c块也是一流的。我同意“一流”这个名字有点模糊。我更喜欢“函数引用”或更具描述性的东西