在Groovy中使用“$”

时间:2011-08-03 01:52:12

标签: grails groovy

我看到{}用于闭包,然后我相信当$放在大括号前面时,它只是在字符串中进行变量替换。我找不到关于$如何在引用中工作的文档...很遗憾难以搜索它,并且Groovy String文档缺乏引入它。能否请您指出文档和/或解释Groovy中的“$”运算符 - 如何使用它?除了Groovy之外,Grails是否会扩展它?

4 个答案:

答案 0 :(得分:41)

在GString(groovy字符串)中,任何有效的Groovy表达式都可以包含在$ {...}中,包括方法调用等。

详情见following page

答案 1 :(得分:34)

Grails不会将$的使用范围扩展到Groovy之外。以下是$

的两个实际用法

字符串插值

在GString中,您可以使用$ without {}来评估属性路径,例如

def date = new Date()
println "The time is $date.time"

如果要评估比属性路径更复杂的表达式,则必须使用$ {},例如

println "The time is ${new Date().getTime()}"

动态代码执行

动态访问属性

def prop = "time"
new Date()."$prop"

动态调用方法

def prop = "toString"
new Date()."$prop"()

正如评论中所指出的,这实际上只是字符串插值的一个特例,因为以下内容也是有效的

new Date().'toString'()

答案 2 :(得分:10)

$不是Groovy中的运算符。在字符串替换中,它标识字符串中的变量 - 那里没有魔法。它是许多模板和编程语言中用于内联变量的通用格式。

此处列出了所有特殊的Groovy运算符:http://groovy-lang.org/operators.html

答案 3 :(得分:-1)

W enter image description here ork出现在边线Jenkins File中

#!/usr/bin/env groovy
node{
          stage ('print'){
             def DestPath="D\$\\"
             println("DestPath:${DestPath}")
          }
}