Использование "$" в 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

W орк в сторону Дженкинс Файл в пиплайне

#!/usr/bin/env groovy
node{
          stage ('print'){
             def DestPath="D\$\\"
             println("DestPath:${DestPath}")
          }
}
Другие вопросы по тегам