代码之家  ›  专栏  ›  技术社区  ›  SudoPlz

如何在groovy中计算字符串键以使其输出值?

  •  2
  • SudoPlz  · 技术社区  · 6 年前

    我们在~/.gradle/gradle.properties中定义了一个键/值属性,如下所示:

    ~/.gradle/gradle.属性 以下内容:

    FOO=BAR
    

    如果我们这样做:

    println "$FOO" // prints BAR
    

    它可以工作,但是如果我们试图使它成为一个如下所示的函数:

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

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

    我们该怎么做?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Szymon Stepniak    6 年前

    你的 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() 返回当前正在执行的分级任务范围中定义的所有属性/变量的映射。