web-dev-qa-db-fra.com

Utiliser "$" dans Groovy

Je vois que {} sont utilisés pour les fermetures, puis je crois que lorsqu'un $ est placé devant des accolades, il fait simplement une substitution de variable dans une chaîne. Je ne trouve pas la documentation sur le fonctionnement de $ dans la référence ... difficile à rechercher malheureusement, et la documentation de Groovy String manque pour introduire cela. Pouvez-vous s'il vous plaît me pointer vers la documentation et/ou expliquer l'opérateur "$" dans Groovy - comment tout cela peut être utilisé? Grails l'étend-il du tout au-delà de Groovy?

34
Ray

Dans une GString (chaîne groovy), toute expression Groovy valide peut être incluse dans le $ {...} y compris les appels de méthode, etc.

Ceci est détaillé dans la page suivante .

42
Nicolas Modrzyk

Grails n'étend pas l'utilisation de $ au-delà de Groovy. Voici deux utilisations pratiques de $

Interpolation de chaînes

Dans une GString, vous pouvez utiliser $ sans {} pour évaluer un chemin de propriété, par exemple.

def date = new Date()
println "The time is $date.time"

Si vous souhaitez évaluer une expression qui est plus complexe qu'un chemin de propriété, vous devez utiliser $ {}, par ex.

println "The time is ${new Date().getTime()}"

Exécution de code dynamique

Accès dynamique à une propriété

def prop = "time"
new Date()."$prop"

Appel dynamique d'une méthode

def prop = "toString"
new Date()."$prop"()

Comme indiqué dans les commentaires, ce n'est vraiment qu'un cas spécial d'interpolation de chaînes, car ce qui suit est également valide

new Date().'toString'()
35
Dónal

$ n'est pas un opérateur dans Groovy. Dans la substitution de chaîne, il identifie les variables dans la chaîne - il n'y a pas de magie là-bas. Il s'agit d'un format commun utilisé pour les variables en ligne dans de nombreux modèles et langages de programmation.

Tous les opérateurs Groovy spéciaux sont répertoriés ici: http://groovy-lang.org/operators.html

10
OverZealous