Я вижу, что {} используются для замыканий, и тогда я верю, когда перед фигурными скобками стоит $, он просто выполняет замену переменных внутри строки. Я не могу найти документацию о том, как работает $в ссылке... трудно найти на нем, к сожалению, и в документации Groovy String отсутствует представление об этом. Не могли бы вы указать мне документацию и/или объяснить оператор "$" в Groovy - как все это можно использовать? Действительно ли Grails расширяет его за пределами Groovy?
Использование "$" в Groovy
Ответ 1
В строке GString (groovy) любое допустимое выражение Groovy может быть заключено в ${...}, включая вызовы методов и т.д.
Это подробно описано в следующей странице.
Ответ 2
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'()
Ответ 3
$
не является оператором в Groovy. В подстановке строк он идентифицирует переменные внутри строки - там нет волшебства. Это общий формат, используемый для встроенных переменных во многих языках шаблонов и программирования.
Здесь перечислены все специальные операторы Groovy: http://groovy-lang.org/operators.html