Est-il possible de créer un objet sans déclarer la classe?
Est-il possible de créer un objet sans déclarer la classe? En JavaScript
obj = {a: '1'}; console.log(obj.a)
Vous devez vous connecter pour publier un commentaire.
Est-il possible de créer un objet sans déclarer la classe? En JavaScript
obj = {a: '1'}; console.log(obj.a)
Vous devez vous connecter pour publier un commentaire.
En Groovy, vous devez toujours fournir la classe d'un objet en cours de création, il n'y a pas d'équivalent en Groovy, JavaScript objet-la syntaxe littérale.
Cependant, Groovy a une syntaxe littérale pour une
Map
, qui est conceptuellement très similaire à l'objet JavaScript, c'est à dire les deux sont une collection de propriétés ou de paires nom-valeur.L'équivalent Groovy code JavaScript ci-dessus est:
Même si il n'y a aucun nom de la classe utilisée ici, vous êtes encore en train de créer un objet d'une classe particulière (
java.util.LinkedHashMap
). Le code ci-dessus est juste un raccourci pour:La
Expando
de la classe est peut-être encore plus semblable à un objet JavaScript, et est utile lorsque vous voulez éviter les "frais généraux" de la définition d'une classe, ou si vous voulez un objet dynamique à laquelle tout arbitraire de la propriété peut être ajouté au moment de l'exécution.LinkedHashMap
. E. g. cela fonctionne:def obj = [a: [1,2, "foo"]]; obj.a.push("bar")
Quelque peu étonné de voir que personne n'a mentionné la classe Expando. Cela ajoute des fonctionnalités supplémentaires sur une carte que vous pouvez faire directement référence à des propriétés au sein de vos fonctions. Exemple de Code ci-dessous.
imprimé de sortie:
def
ABC
groovy.lang.MissingPropertyException
ABC (si vous commentez la println($a) dans la carte.exécuter, println($b) affiche ABC)
Ignorer les sauts de ligne supplémentaires dans la sortie. A été d'avoir un diable de temps à mettre de la def et de l'ABC sur deux lignes consécutives.
Voir le Expando documentation de l'API pour plus d'informations.
Groovy a un équivalent de la notation json. La seule différence est qu'ils utilisent [:] pour les cartes au lieu de {}. Donc, vous pouvez facilement convertir au format json dans un groovy object notation.
Ici, je ne l'ai pas imprimé l'objet directement. Depuis, il permet d'imprimer avec des crochets de notation.
Lire l'article en entier. Groovy pour les développeurs javascript.
https://metamug.com/article/groovy-for-javascript-developers.php