Tôi có một đối tượng Dictionary
trong VBScript. Làm thế nào tôi có thể sao chép tất cả các đối tượng chứa trong nó vào một Dictionary
mới, tức là tạo một bản sao/bản sao của từ điển?Làm cách nào để sao chép một đối tượng Từ điển?
Trả lời
Tạo một đối tượng mới Dictionary
, lặp thông qua các phím trong từ điển gốc và thêm các phím và các giá trị tương ứng vào từ điển mới, như thế này:
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
này nên là đủ trong hầu hết các trường hợp. Tuy nhiên, nếu từ điển gốc của bạn chứa các đối tượng, bạn sẽ phải thực hiện sao chép sâu, tức là, nhân bản các đối tượng này.
Hãy xem câu trả lời được chấp nhận trong VBScript: How to utiliize a dictionary object returned from a function?. Có thể là một giải pháp nếu một tham chiếu là tất cả những gì đang được tìm kiếm.
Sửa Theo nhận xét của Ekkehard.Horner, tôi hiểu bây giờ mà đây là không nhân bản, nhưng có thể giúp những người khác được người chỉ tìm kiếm một tham chiếu đến đối tượng gốc.
Từ điển là đối tượng và chuyển đối tượng cho Subs/Functions/Methods (ngay cả với ByVal), gán đối tượng vào giá trị và trả về đối tượng từ hàm/phương thức (hy vọng với Set) sẽ luôn * đối phó với các tham chiếu và không bao giờ sao chép/sao chép/tạo một đối tượng mới. Vì vậy, hãy xóa câu trả lời sai lầm/sai của bạn. –
Có thats true..but là có bất kỳ chức năng được xây dựng trong để thực hiện nhân bản sâu –