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