我对第一类函数的一点了解是它支持将函数作为参数传递,我们也可以将它们作为另一个函数中的值返回......我是 Swift 编程语言的新手,任何人都可以用一个例子来详细说明。
问问题
4460 次
5 回答
12
演示此行为的一个非常简单的示例:
func functionA() {
println("Hello by functionA")
}
func executeFunction(function: () -> ()) {
function()
}
executeFunction(functionA)
于 2014-10-07T12:48:12.487 回答
4
一等函数是可以返回另一个函数的函数。例如:
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
}
}
该函数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))")
当您不关心函数的实现时,使用 First-Class 函数返回这些函数会变得有益。另外,有时,您不负责开发(或未授权)诸如add
,之类的功能min
。所以有人会为你开发一个返回这些函数的 First-Class 函数,你有责任继续......
于 2015-09-11T16:25:48.100 回答
1
在从词法环境中捕获值时返回函数的函数:
一个 Comparables 数组的函数,它返回一个测试谓词的函数,如果该值是被测数组的极值,则返回一个返回 Bool 的值的函数。(柯里化)
于 2014-10-08T01:34:42.057 回答
1
当函数被视为普通变量时,可以说任何编程语言都具有一等函数。这意味着一个函数可以作为参数传递给任何其他函数,可以由任何函数返回,也可以分配给任何变量。
即,(参考苹果的例子)
传递函数作为参数
func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
返回函数
func makeIncrementer() -> ((Int) -> Int) {
func addOne(number: Int) -> Int {
return 1 + number
}
return addOne
}
于 2018-07-26T18:48:31.200 回答
0
一等函数的性质
- 函数是 Object 类型的实例。
- 您可以将函数存储在变量中。
- 您可以将函数作为参数传递给另一个函数。
- 您可以从函数返回函数。
- 您可以将它们存储在数据结构中,例如哈希表、列表……</li>
参考https://www.geeksforgeeks.org/first-class-functions-python/
于 2020-07-25T01:31:25.493 回答