10
votes

Comment puis-je cloner un objet de dictionnaire?

J'ai un dictionnaire objet dans VBScript. Comment puis-je copier tous les objets contenus dans un nouveau dictionnaire , c'est-à-dire, c'est-à-dire un clone / duplicaté du dictionnaire?


0 commentaires

3 Réponses :


12
votes

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


3 commentaires

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 avant Ajout de données au nouveau dictionnaire.



-2
votes

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é.

Modifier selon Ekkehard.horner, je comprends maintenant que c'est pas clonant , mais peut aider les autres qui ne recherchent qu'une référence à l'objet d'origine.


1 commentaires

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 traiter avec des références et jamais cloner / Copier / Créer un nouvel objet. Donc, veuillez supprimer votre réponse erronée / mauvaise.



0
votes

Si quelqu'un recherche une solution VBA, la fonction suivante effectue un "clone profond" d'un dictionnaire, y compris des objets de dictionnaire imbriqué. XXX


0 commentaires