如何评估Groovy中的字符串键,使其输出值?

时间:2018-07-14 01:37:26

标签: gradle groovy android-gradle build.gradle

我们正在〜/ .gradle / gradle.properties中定义键/值属性,如下所示:

〜/ .gradle / gradle.properties

FOO=BAR

如果我们这样做:

println "$FOO" // prints BAR

它可以工作,但是如果我们尝试使其具有以下功能:

def getEnvValueForKey = { keyStr ->
    return "$keyStr"
}

getEnvValueForKey("FOO")返回FOO而不是BAR

我们如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您的getEnvValueForKey(key)函数始终返回作为参数传递的变量的GString表示形式。表达式"$keyStr"实际上是"" + keyStr.toString()的替代形式。当您致电"$FOO" == "" + FOO.toString()时,也会发生同样的事情。

如果要获取在gradle.properties文件中定义的属性,可以将函数重新定义为以下内容:

def getEnvValueForKey = { keyStr ->
  return this.getProperties().getOrDefault(keyStr, null)
}

在这种情况下,呼叫getEnvValueForKey("FOO")会得出

this.getProperties().getOrDefault("FOO", null)

如果当前作用域变量FOO中存在变量,它将返回其值,否则返回null

请记住,this.getProperties()返回在正在执行的Gradle任务的当前范围内定义的所有属性/变量的映射。