J'ai un dictionnaire code> objet code> dans VBScript. Comment puis-je copier tous les objets contenus dans un nouveau dictionnaire code>, c'est-à-dire, c'est-à-dire un clone / duplicaté du dictionnaire? P>
3 Réponses :
Création d'un nouveau dictionnaire code> objet, itérer via les touches dans le dictionnaire d'origine et ajoute ces clés et les valeurs correspondantes au nouveau dictionnaire, comme ceci:
Function CloneDictionary(Dict) Dim newDict Set newDict = CreateObject("Scripting.Dictionary") For Each key in Dict.Keys newDict.Add key, Dict(key) Next newDict.CompareMode = Dict.CompareMode Set CloneDictionary = newDict End Function
Oui c'est vrai..mais y at-il une fonctionnalité intégrée pour effectuer un clonage profond
Merci que cela fonctionne bien, étrange, ce n'est pas une partie de la langue VBA ...
Notez que vous devez définir le .commareemode code> avant b> Ajout de données au nouveau dictionnaire.
Jetez un coup d'œil à la réponse acceptée dans VBScript: Comment utiliser un objet de dictionnaire renvoyé d'une fonction? . Pourrait être une solution si une référence est tout ce qui est recherché. P>
Les dictionnaires sont des objets et passent des objets aux sous-souscriptifs / fonctions / méthodes (même avec BYVAL), affectant des objets à des valeurs et renvoyant des objets à partir de fonctions / méthode (espérons-le avec ensemble) toujours i> traiter avec des références et jamais cloner / Copier / Créer un nouvel objet. Donc, veuillez supprimer votre réponse erronée / mauvaise.
Si quelqu'un recherche une solution VBA, la fonction suivante effectue un "clone profond" d'un dictionnaire, y compris des objets de dictionnaire imbriqué.