【问题标题】:Groovy closure return value independent of code structureGroovy 闭包返回值与代码结构无关
【发布时间】:2019-08-22 10:09:52
【问题描述】:

我在 build.gradle 中有一些代码

test {
    doFirst {
        def profile = System.getenv("...")
        if (profile == "dev") {
            println "1: if start"
            // ...
            println "2: if end"
        }
    }
}

最后一行 ("2: if end") 仍然执行,即使配置文件不是 "dev"

看起来 groovy 并不关心代码结构:它简单地返回最后一行作为闭包的结果

因为如果我将代码修改为:

test {
    doFirst {
        def profile = System.getenv("...")
        if (profile == "dev") {
            println "1: if start"
            // ...
            println "2: if end"
        }
        println "3: after if"
    }
}

然后,这样,如果配置文件不是“dev”,那么一切正常 - 在检查语句 groovy 后执行“3: after if”
这是错误还是功能? :)

【问题讨论】:

  • 我相信这是 Gradle 而不是纯粹的 groovy。
  • 我也相信提供的代码不会发生这种情况......这是在调试器中吗?
  • 是的,这仅在调试器中,抱歉.. (
  • 它没有运行该行,这是调试器的问题

标签: groovy closures


【解决方案1】:

是的,正如评论的那样,这仅在调试器中 - groovy 工作正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    相关资源
    最近更新 更多