Definieren Sie die Kontrolle als Variable in Mathematica

7

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?

    
Ludwig Weinzierl 21.08.2011, 14:27
quelle

2 Antworten

11

Manipulate hat das Attribut HoldAll . Sie können control zum Auswerten erzwingen und alles funktioniert einwandfrei

%Vor%

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:

%Vor%     
Simon 21.08.2011 14:36
quelle
10

Dies

%Vor%

funktioniert. Ich nehme an, es funktioniert nicht ohne die Evaluate weil

%Vor%

zeigt, dass Manipulate das Attribut HoldAll hat (aber ich kann falsch liegen). Um die Wirkung dieses Attributs zu sehen, versuchen Sie Folgendes:

%Vor%

Somit scheint es, dass HoldAll aufgrund des Manipulate -Attributs einfach nicht "inside" con sieht, es sei denn, Sie bewerten es explizit.

    
acl 21.08.2011 14:35
quelle

Tags und Links