Использование "$" в Groovy - PullRequest
       3

Использование "$" в Groovy

33 голосов
/ 03 августа 2011

Я вижу, что {} используются для замыканий, и затем я считаю, что когда перед скобками ставится $, он просто выполняет подстановку переменных внутри строки.Я не могу найти документацию о том, как работает $, в справочнике ... к сожалению, его сложно найти, а в документации Groovy String этого нет.Можете ли вы указать мне на документацию и / или объяснить оператор "$" в Groovy - как все это можно использовать?Расширяет ли Grails его вообще за пределами Groovy?

Ответы [ 4 ]

41 голосов
/ 03 августа 2011

В GString (строка groovy) любое допустимое выражение Groovy может быть заключено в $ {...}, включая вызовы методов и т. Д.

Это подробно описано на следующей странице .

34 голосов
/ 03 августа 2011

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'()
10 голосов
/ 03 августа 2011

$ не является оператором в Groovy. При подстановке строк он идентифицирует переменные внутри строки - там нет магии. Это общий формат, используемый для встроенных переменных во многих шаблонах и языках программирования.

Здесь перечислены все специальные операторы Groovy: http://groovy -lang.org / operator.html

0 голосов
/ 27 ноября 2018

Ш enter image description here Орк в стороне Дженкинс Файл в пиплайне

#!/usr/bin/env groovy
node{
          stage ('print'){
             def DestPath="D\$\\"
             println("DestPath:${DestPath}")
          }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...