gpt4 book ai didi

grails - Groovy 变量双重替换

转载 作者:行者123 更新时间:2023-12-02 15:03:35 26 4
gpt4 key购买 nike

我要执行双重替换 .

打印时:

def y    = "\${x}"
def x = "world"
def z = "Hello ${y}"
println z

它打印:
Hello ${x}

当我想打印 Hello World ,我尝试执行双重评估 ${${}} , 将其转换为 org.codehaus.groovy.runtime.GStringImpl ,以及绝望的 ${y.toStrin() }

编辑:

更清楚地说,我的意思是,但在 Groovy 中:
  • https://unix.stackexchange.com/questions/68042/double-and-triple-substitution-in-bash-and-zsh
  • https://unix.stackexchange.com/questions/68035/foo-and-zsh

  • ( 我为什么要这样做? :因为我们有一些文本文件需要用 groovy 变量进行评估;变量很多并且在代码的不同部分是不同的,因此我想有一个解决方案在所有情况下工作,不必每次都绑定(bind)每个变量,不需要添加很多代码行)

    最佳答案

    因此,有了您所拥有的,您就可以转义 $ 所以它只是被解释为一个字符串。

    对于您想要做的事情,我会研究 Groovys 的模板引擎:
    http://docs.groovy-lang.org/docs/next/html/documentation/template-engines.html

    在阅读了您的评论后,我提出了一些想法并想出了这个人为的答案,这也可能不是您想要的:

    import groovy.lang.GroovyShell

    class test{
    String x = "world"
    String y = "\${x}"
    void function(){
    GroovyShell shell = new GroovyShell();
    Closure c = shell.evaluate("""{->"Hello $y"}""")
    c.delegate = this
    c.resolveStrategry = Closure.DELEGATE_FIRST
    String z = c.call()
    println z
    }
    }

    new test().function()

    但这是我能想到的最接近的东西,可能会引导你找到一些东西......

    关于grails - Groovy 变量双重替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54150739/

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