gpt4 book ai didi

java - 使用 Groovysh 作为 Java REPL 时的问题

转载 作者:行者123 更新时间:2023-12-01 22:24:46 24 4
gpt4 key购买 nike

正如这篇文章 ( Is there something like python's interactive REPL mode, but for Java? ) 所示,我们可以使用 groovysh 进行 Java REPL。

我的这段代码可以用 javac 很好地编译。

    GroovyShell shell = new GroovyShell();
shell.evaluate("println \"My name is ${name}\"");

但是,当我尝试在 groovysh 中运行此命令时,出现错误。我必须制作 \${name} 来绕过该错误。

这是为什么呢? Java 和 Groovy 代码有哪些其他可能的(角落)情况不同?

最佳答案

Groovy 中的双引号字符串文字是 GString,它解释 ${...} 表达式并将其结果替换为字符串。给出 Groovy 代码

shell.evaluate("println \"My name is ${name}\"")

Groovy 将尝试解析当前上下文中的 name 变量,并在找不到合适的定义时抛出异常。

如果您想按字面意义传递 ${...} (因此它由 GroovyShell 解释,而不是由当前的 Groovy 上下文解释),那么您可以需要转义美元符号或使用不受 ${...} 插值影响的其他 Groovy 字符串分隔符之一(单引号、三重单引号或斜杠):

shell.evaluate('println "My name is ${name}"')
shell.evaluate('''println "My dog's name is ${dogName}"''')

在单引号字符串中,您也不需要反斜杠双引号字符。

关于java - 使用 Groovysh 作为 Java REPL 时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29015003/

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