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