为什么我在尝试运行以下命令时会卡在 Playground 的编译循环中?
func makeIncrementer(byHowMuch: Int) -> ((Int) -> Int) {
func addArg(number: Int) -> Int {
return 2 + number
}
return addArg
}
var twoTimesIncrementer = makeIncrementer(2)
twoTimesIncrementer(7)
另外,在非函数式语言中如何调用返回函数的函数?还是 Lambda?
最佳答案
首先,我没有陷入编译循环,它按预期返回 9。 Playground 有相当多的错误,如果某些东西在 playground 中不起作用,请将其粘贴到实际项目中,尝试运行它,您会看到它是否真的有效。
其次,返回一个函数的函数仍然是一个函数,它的命名不会随着它的返回类型而改变。唯一需要注意的是,在 Swift 中,您可以将函数作为一级对象,您的 twoTimesIncrementer
和其他变量一样是一个变量。
除此之外,我的建议是不要过度沉迷于某些模式或功能的命名。您是否有非函数式语言的示例,您可以在其中定义返回函数的函数?
关于swift - 为什么我会陷入编译循环 - Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34464294/