0
我在過去兩天中遇到了這個問題。我正在對兩個不同的數據進行相同的一組操作(涉及動態更新操作)。當每個人都單獨完成我得到正確的輸出,但是當兩個manupulates在同一個筆記本中,第一個操作只是複製第二個。我讀到這與全局變量有關,但作爲一個初學者有點難以理解。如何防止兩個Manupulate函數相互影響?
我在過去兩天中遇到了這個問題。我正在對兩個不同的數據進行相同的一組操作(涉及動態更新操作)。當每個人都單獨完成我得到正確的輸出,但是當兩個manupulates在同一個筆記本中,第一個操作只是複製第二個。我讀到這與全局變量有關,但作爲一個初學者有點難以理解。如何防止兩個Manupulate函數相互影響?
在Manipulate內部訪問和使用的所有變量都應該在Manipulate內部。不要使用全局變量。就這些。即不寫如
x=0
Manipulate[ x=y+1;
x,
{{y,0,"y="},0,10,1}
]
從現在起x
是在全球範圍內。但寫
Manipulate[
Module[{x=0},
x=y+1;
x
],
{{y,0,"y="},0,10,1}
]
只需要確保沒有使用的變量是全球性的。使用Manipulate中的Modules將代碼分解出來,並使用參數傳遞它們之間的所有內容。
謝謝。我重寫了所有的函數,只包含局部變量。我是mathematica的新手,所以我發現它有點違反直覺,默認情況下變量是全局的。 – BobLoblaw