swift - 为什么我会陷入编译循环 - Lambda

标签 swift function lambda

为什么我在尝试运行以下命令时会卡在 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/

相关文章:

iOS 后台任务会在前台完成吗?

ios - 从具有无效证书的 URL 加载 JSON

ios - swift 4 : No such module 'CoreServices.DictionaryServices'

swift - Alamofire 总是进入失败状态

android - 使用 onClick 按钮更改 EditText 的值?

c++ - lambda 捕获列表中的 weak_ptr、shared_ptr 和 std::queue<T,Container>::emplace

java - Lambda 表达式和泛型仅在方法中定义

python - 将字符串拆分为 x 个字符

function - 如何跳过有错误的函数并继续使用Python中的下一个函数

c# - 重写 lambda 扩展方法