61 votes

Fonctions cachées de Groovy ?

Il semble que Groovy ait été oublié dans ce fil de discussion. Je vais donc poser la même question pour Groovy.

  • Essayez de limiter les réponses au noyau Groovy
  • Une fonctionnalité par réponse
  • Donnez un exemple et une brève description de la fonctionnalité, et pas seulement un lien vers la documentation.
  • Étiquettez la caractéristique en utilisant un titre en gras comme première ligne.

Voir aussi :

  1. Fonctions cachées de Python
  2. Fonctions cachées de Ruby
  3. Fonctions cachées de Perl
  4. Fonctions cachées de Java

43voto

En utilisant l'opérateur d'étalement de points

def animals = ['ant', 'buffalo', 'canary', 'dog']
assert animals.size() == 4
assert animals*.size() == [3, 7, 6, 3]

Il s'agit d'un raccourci pour animals.collect { it.size() } .

32voto

Rui Vieira Points 2713

El avec permet de transformer cela :

 myObj1.setValue(10)
 otherObj.setTitle(myObj1.getName())
 myObj1.setMode(Obj1.MODE_NORMAL)

dans ce

 myObj1.with {
    value = 10
    otherObj.title = name
    mode = MODE_NORMAL
 }

30voto

Robert Fischer Points 869

Utilisation des hachages comme pseudo-objets.

def x = [foo:1, bar:{-> println "Hello, world!"}]
x.foo
x.bar()

Combinée à la dactylographie des canards, cette approche peut vous permettre d'aller loin. Vous n'avez même pas besoin de sortir l'opérateur "as".

27voto

Bill James Points 7554

Quelqu'un sait-il Elvis ?

def d = "hello";
def obj = null;

def obj2 = obj ?: d;   // sets obj2 to default
obj = "world"

def obj3 = obj ?: d;  // sets obj3 to obj (since it's non-null)

Merci beaucoup.

27voto

Ted Naleid Points 13349

Pour connaître les méthodes d'un objet, il suffit de demander à la métaClasse :

"foo".metaClass.methods.name.sort().unique()

des empreintes :

["charAt", "codePointAt", "codePointBefore", "codePointCount", "compareTo",
 "compareToIgnoreCase", "concat", "contains", "contentEquals", "copyValueOf", 
 "endsWith", "equals", "equalsIgnoreCase", "format", "getBytes", "getChars", 
 "getClass", "hashCode", "indexOf", "intern", "lastIndexOf", "length", "matches", 
 "notify", "notifyAll", "offsetByCodePoints", "regionMatches", "replace", 
 "replaceAll", "replaceFirst", "split", "startsWith", "subSequence", "substring", 
 "toCharArray", "toLowerCase", "toString", "toUpperCase", "trim", "valueOf", "wait"]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X