1
得到改變,這是我做的不想。例如,參見下面的代碼:Excel的VBA:我不能夠創建一個嵌套的字典,它分配給一個變量,覆蓋內的一個值,然後將其分配給沒有原始變量的值另一個變量嵌套的字典問題
Option Explicit
Sub Button1_Click()
Dim d_outer As Scripting.Dictionary
Set d_outer = New Scripting.Dictionary
Dim d_inner As Scripting.Dictionary
Set d_inner = New Scripting.Dictionary
Call d_inner.Add("key", "foo")
Call d_outer.Add("first attempt", d_inner)
' Cannot use "Add", since key already exists, must use Item()
d_inner.Item("key") = "bar"
Call d_outer.Add("second attempt", d_inner)
' Print all values.
Dim v_outer As Variant
Dim v_inner As Variant
For Each v_outer In d_outer.Keys()
For Each v_inner In d_outer(v_outer).Keys()
Debug.Print "(" & v_outer & ", " & v_inner & "): '" & d_outer(v_outer)(v_inner) & "'"
Next v_inner
Next v_outer
End Sub
這將產生以下輸出:
(first attempt, key): 'bar'
(second attempt, key): 'bar'
第一次嘗試的值應爲foo
。爲什麼它變爲bar
?我該如何解決?每次我只想更改其中一個值時,是否需要創建一個新的字典,該字典是d_inner的精確副本?如果是這樣,有沒有簡單的方法來做到這一點?
此行更靈活:'d_inner .Item(「key」)=「bar」'將第一次嘗試'更改爲'bar' – CallumDA
是的,我知道。但是因爲我們已經在上一行調用了帶有原始(正確)值的「第一次嘗試」鍵的Add()方法,那麼對於那個鍵來說不應該這麼重要嗎? – MrSnrub
在下面的答案中解釋。希望有所幫助 – CallumDA