我看到{ }被用作闭包,当在大括号前面加上$时,它就是在字符串中执行变量替换。我找不到关于$符号的文档,很难搜索到,而且Groovy字符串文档也没有介绍这个。请问您可以指向文档和/或解释Groovy中"$"操作符吗?它的所有用法都有哪些?Grails是否在Groovy基础上进行了扩展?
GString(Groovy字符串)中,任何有效的 Groovy 表达式都可以用 ${...} 包含,包括方法调用等。
详情请参见该页面。
Grails不会在Groovy之外扩展$的用法。以下是$的两个实际用途:
在GString中,您可以使用$而不需要{}来计算属性路径,例如:
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'()
new Date().'toString'()
。所以第一个用法只是构建一个字符串,然后用它来访问方法/属性的情况。 - tim_yates$
的真正用处。 - tim_yates$
在 Groovy 中不是运算符。在字符串替换中,它用于标识字符串内的变量 - 这里没有什么魔法。这是许多模板和编程语言中用于内联变量的常见格式。
所有特殊的 Groovy 运算符都在此处列出:http://groovy-lang.org/operators.html