你想要从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(我认为).
一个典型的例子是计算器程序,例如:
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 :)