Il est quelque peu inhabituel dans Groovy de voir new ArrayList<Integer>()
puisque []
fonctionne de manière identique et est beaucoup moins verbeux, donc j'aurais écrit cela comme Set<Integer> weeks = []
. Ensuite, c'est un peu plus clair sur ce qui se passe - Groovy convertit un type de collection en un autre, avec le []
vraiment comme un moyen pratique de créer un support et de remplir les données initiales (s'il y en a). Comme il n'y a pas de sucre syntaxique pour les collections autres que []
pour List
et [:]
, vous avez besoin de ces conversions.
def weeks = [] as Set
est probablement la syntaxe la plus courante. C'est aussi plus clair puisque []
est juste temporaire et l'utilisation de "as" fait la conversion, et plus explicitement que simplement déclarer le type sur le côté gauche.
Vous pouvez également utiliser ceci pour convertir des collections en tableaux. Vous ne pouvez pas utiliser la syntaxe Java pour créer des tableaux car elle utilise des accolades et ressemble à une définition de fermeture. Par conséquent, au lieu de int[] numbers = new int[] { 1, 2, 3 }
, vous devez exécuter int[] numbers = [1, 2, 3]
ou def numbers = [1, 2, 3] as int[]
.
Je ne sais pas Grail, Mais est-ce que ce code compile bien? n'y a-t-il pas d'erreur TypeMismatch> – Zohaib