你想要从Swift函数返回函数的最常见情况是什么?
在下面的代码中,我正在返回一个函数但我没有真正看到目的,因为我返回的函数是在返回它的函数内部。我感到困惑的原因是因为我们只用一个函数就能完成同样的事情。
func person () -> ((String, Int) -> String) {
func info(name: String, age: Int) -> (String) {
return "\(name) is \(age) old"
}
return info
}
let nathan = person()
nathan("Nathan", 3)
print(nathan("Nathan", 3))
有人可以指出你想要返回一个函数的常见情况,并且可能用一个更好的例子来说明它吗?
我想理解这一点,因为这对于编程而言通常不仅仅是Swift(我认为)。
答案 0 :(得分:7)
一个典型的例子是计算器程序,例如:
func operatorForString(str: String) -> ((Float, Float) -> Float)? {
if str == "+" {
return (+) // brackets required to clarify that we mean the function
} else if str == "-" {
return (-)
} else if str == "*" {
return (*)
} else if str == "/" {
return (/)
} else if str == "**" {
return pow // No brackets required here
} else {
return nil
}
}
if let op = operatorForString("-") {
let result = op(1, 2) // -1
}
它相当做作,但它简单地说明了这个原则......
作为对读者的一种锻炼"尝试将其作为Dictionary
查找,而不是重复if
s:)