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

时间:2015-12-25 16:01:17

标签: 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还在吗?

1 个答案:

答案 0 :(得分:1)

首先,我不会陷入编译循环,它会按预期返回9。游乐场有很多错误,如果某些东西在游乐场不起作用,将它粘贴到一个实际的项目中,尝试运行它,你会看到它是否真的有效。

其次,返回函数的函数仍然是一个函数,它的命名不会随其返回类型而改变。唯一需要注意的是,在Swift中你可以将函数作为First-Class Objects,你的Declare @IdsCSV NVARCHAR(MAX),@ObjectMasterId INT = NULL EXECUTE SP_EXECUTESQL @SqlQuery, N'@IdsCSV NVARCHAR(MAX) OUTPUT,@ObjectMasterId INT = NULL OUTPUT', @IdsCSV = @IdsCSV OUTPUT, @ObjectMasterId = @ObjectMasterId OUTPUT 是一个变量。

除此之外,我的建议并不是试图过度沉迷于某些模式或功能的命名。您是否有一个非功能性语言的示例,您可以在其中定义返回函数的函数?