Gelegentlich ich in das folgende Szenario ausführen - ein Verfahren, um eine globale Funktion verwendet f[x]
eine Berechnung zu tun, inzwischen ein anderes Verfahren macht f=5
die f[x]
in 5[x]
Detecting DownValue/OwnValue Konflikte
alle nachfolgenden Anrufe dreht Ich weiß über lokalisierende Variablen, aber ich bevorzuge globale Variablen früh in der Entwicklung.
Ich kann mir keinen legitimen Grund vorstellen, OwnValues und DownValues zu mischen. Gibt es eine Möglichkeit, eine Warnmeldung zu implementieren, wenn eine Situation wie oben auftritt?
Neben Tipps unten können Standardkontext in OptionsInspector unter Zellenoptionen/Evaluation Optionen/CellContext
Was denken Sie über das Überschreiben der Warnmeldung Set/SetDelayed, wenn der DownValue/OwnValue-Konflikt besteht? –
Wahrscheinlich möglich, aber wahrscheinlich fragil. Haben Sie darüber nachgedacht, stattdessen Kontexte zu verwenden ('Begin' /' End') oder Kontexte auf Zellen-/Notebook-Ebene zu setzen? –
+1, ich hatte nicht gedacht, solche Werte zu verwenden. Klug. Darüber hinaus machen Sie einen guten Punkt über Kontexte auf Zellebene; Ich habe festgestellt, dass sie eine der nützlichsten Verbesserungen seit v. 5 sind. – rcollyer