Integrierte Namespace-Verwendung, Names Default to Here, Funktion lokaler VariablenHallo, ich habe eine Frage zu Namespaces in Modulskripten und Funktionen in diesen Skripten.
Soweit ich weiß, wird jede Variable, die definiert ist, in der Names Default to Here () true ist, in einem "here" -Namensraum zugewiesen. Was ich nicht sicher bin, ist der Umfang dieses Namespace. Wird "hier" immer als vollständiges Skript festgelegt (z. B. innerhalb eines Moduls) oder können auch Variablen erstellt werden, die für einzelne Funktionen innerhalb eines Skripts lokal sind? Was ist der richtige Weg, um lokale Variablen innerhalb einer Funktion zu erstellen? Gibt es eine Möglichkeit, dass in jeder Funktion definierte Variablen nur für diese Funktion und nicht für das vollständige Skript lokal sind? Was ich mir vorstelle, ist so etwas wie unten.
//Script to define different scopes of variables<BR />Names Default to Here(1); //set variables to be scoped to this script by default<BR />a = 1;<BR />b = 2;<BR /><BR />Function1 = Function({},<BR /> Names Default to Here(1);<BR /> c = 3;<BR />);<BR /><BR />Function2 = Function({},<BR /> Names Default to Here(1);<BR /> d = 4;<BR />);@lbrickweg @jcimini
Betreff: Integrierte Namespace-Verwendung, Names Default to Here, Funktion lokaler VariablenHmm Entschuldigung für die Formatierung dort
//Script to define different scopes of variables
Names Default to Here(1); //set variables to be scoped to this script by default
a = 1;
b = 2;
Function1 = Function({},
Names Default to Here(1); //set variables set in Function1 to be scoped only to Function1
c = 3;
);
Function2 = Function({},
Names Default to Here(1); //set variables set in Function2 to be scoped only to Function2
d = 4;
);Betreff: Integrierte Namespace-Verwendung, Names Default to Here, Funktion lokaler VariablenNames Default To Here (1) bedeutet, dass alle nicht qualifizierten Symbole verwendet / erstellt werden Einreichung (Ausführen eines Skripts) befindet sich im selben Here-Namespace. Es ist also breiter als nur eine einzelne JSL-Datei. Wenn also A.jsl B.jsl enthält, während Names Default To Here aktiviert ist, sind die von A und B erstellten Symbole beide im gleichen Here-Namespace verfügbar.
Für Funktionslokale sollten Sie eine Ortsliste verwenden:
/* Default Local */
slow identity = Function({x}, {Default Local},
x squared = x*x; // unqualified name x squared is defaulted to function local
Sqrt(x squared)
);
/* Or list them explicitly */
slow identity = Function({x}, {x squared},
x squared = x*x; // local because we declared it above
Sqrt(x squared)
);
/* Or qualify them */
slow identity = Function({x},
local:x squared = x*x; // qualify to local explicitly
Sqrt(x squared)
);Betreff: Integrierte Namespace-Verwendung, Names Default to Here, Funktion lokaler VariablenIch habs! Die Sprache "pro Einreichung" ist sehr hilfreich.
Werden beim Ausführen verschiedener Module in App Builder die Skripts für jedes Modul beim Starten der .jmpapp-Datei berücksichtigt? Oder werden die Skripte für jedes Modul beim << Create Instance tatsächlich separat eingereicht, sodass jedes Modul seinen eigenen Here-Namespace hat?
Kurz gesagt, bezieht sich Here bei Verwendung einer jmpapp normalerweise auf jedes Modul oder auf die App als Ganzes?Betreff: Verwendung von integrierten Namespaces, Names Default to Here, Funktion lokale Variablen
@mringqui schrieb:
Ich habs! Die Sprache „pro Einreichung“ ist sehr hilfreich.
Werden die Skripts für jedes Modul beim Ausführen verschiedener Module von App Builder als Folge beim Starten der .jmpapp-Datei eingeschlossen? Oder werden die Skripte für jedes Modul tatsächlich separat beim << Create Instance eingereicht, so dass jedes Modul seinen eigenen Here-Namespace hat?
Kurz gesagt, bezieht sich Here bei der Verwendung einer jmpapp normalerweise auf jedes Modul oder auf die App als Ganzes?
@EvanMcCorkle