Wenn ich manipuliere, kann ich tun:
%Vor%In der Realität sind meine Kontrollen sehr kompliziert und ich würde es vorziehen, sie zu nehmen Definition aus dem Manipulate-Ausdruck, so:
%Vor%Aber das führt zu einem Fehler:
%Vor%Warum funktioniert das nicht so?
Manipulate
hat das Attribut HoldAll
. Sie können control
zum Auswerten erzwingen und alles funktioniert einwandfrei
Das Problem dabei ist, dass die Variable u
nicht korrekt lokalisiert ist. Wenn Sie also z. B. u=1
irgendwo gesetzt haben, gibt% code_de einen Fehler zurück.
Es ist möglicherweise besser, wenn Sie die entsprechenden Scoping-Konstrukte wie Manipulate
oder With
verwenden, je nachdem, was genau Sie vorhaben.
Dies ist vielleicht ein Overkill, aber es stellt sicher, dass DynamicModule
lokal ist und u
außerhalb von manipulate bewegt:
Dies
%Vor% funktioniert. Ich nehme an, es funktioniert nicht ohne die Evaluate
weil
zeigt, dass Manipulate
das Attribut HoldAll
hat (aber ich kann falsch liegen). Um die Wirkung dieses Attributs zu sehen, versuchen Sie Folgendes:
Somit scheint es, dass HoldAll
aufgrund des Manipulate
-Attributs einfach nicht "inside" con
sieht, es sei denn, Sie bewerten es explizit.
Tags und Links wolfram-mathematica syntax