gpt4 book ai didi

gradle - Gradle变量范围

转载 作者:行者123 更新时间:2023-12-03 05:16:44 27 4
gpt4 key购买 nike

我在我的根项目中定义了一个变量和使用它的方法,例如

// An immediately executed closure (I hope)
def myvar = ({-> do something})()

def myfun() {
println myvar + ":" + project
}

并在子项目中将其命名。这导致类似的错误

Could not find property 'myvar' on root project 'root'.



我觉得很奇怪,因为 myvar在函数定义的范围内(所以我可能在做其他事情?)。我看起来像是动态范围界定,但我不敢相信。

我知道 project.ext,但是我不想让 myvar在其他地方可用。

因此,我将定义移到了声明中(它现在已经被多次评估,但是谁在乎),但是后来我发现 project指向根项目,而不是调用该函数的子项目(词法作用域)。是否可以在没有明确传递的情况下获得当前项目?

最佳答案

在脚本的最外层声明的局部变量不在同一脚本的方法范围内。这是由于Groovy如何将脚本转换为可运行的类。解决此问题的一种方法是改用ext.myfun = { ... },它解决了范围界定问题,并且不影响调用站点(仍可以使用myfun())。

您的其他问题似乎无关。 project指的是与脚本相关联的项目,并且不是根据调用者确定的。不通过调用程序就无法获得它。但是,可以为每个项目声明ext.myfun,例如在根脚本的allprojects {}块中。

关于gradle - Gradle变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com