Utilizzo dello spazio dei nomi integrato, nomi predefiniti su qui, funzione variabili localiSalve, ho una domanda sugli spazi dei nomi negli script dei moduli e sulle funzioni all'interno di tali script.
A quanto ho capito, qualsiasi variabile definita dove Names Default to Here() è true verrà assegnata in uno spazio dei nomi "here". Ciò di cui non sono sicuro è l'ambito di tale spazio dei nomi. "Qui" è sempre definito come lo script completo (ad esempio all'interno di un modulo) o può anche creare variabili locali per singole funzioni all'interno di uno script? Qual è il modo giusto per creare variabili locali all'interno di una funzione? C'è un modo per le variabili definite in ogni funzione di essere locali solo a quella funzione e non allo script completo? Quello che sto immaginando è qualcosa di simile sotto.
//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
Oggetto: utilizzo dello spazio dei nomi integrato, nomi predefiniti qui, funzione variabili locali
@mringqui ha scritto:
Fatto! Il linguaggio "per invio" è molto utile.
In seguito, quando si eseguono moduli diversi da App Builder, gli script per ciascun modulo vengono inclusi all'avvio di .jmpapp? Oppure gli script per ogni modulo sono effettivamente inviati separatamente su <
In breve, quando si utilizza una jmpapp, Here in genere si riferisce a ciascun modulo o all'app nel suo complesso?
@EvanMcCorkle
Oggetto: utilizzo dello spazio dei nomi integrato, nomi predefiniti qui, funzione variabili localiFatto! Il linguaggio "per invio" è molto utile.
In seguito, quando si eseguono moduli diversi da App Builder, gli script per ciascun modulo vengono inclusi all'avvio di .jmpapp? Oppure gli script per ogni modulo sono effettivamente inviati separatamente su <
In breve, quando si utilizza una jmpapp, Here in genere si riferisce a ciascun modulo o all'app nel suo complesso?Oggetto: utilizzo dello spazio dei nomi integrato, nomi predefiniti qui, funzione variabili localiNomi Default To Here(1) significa che tutti i simboli non qualificati sono stati usati/creati durante questo sottomissione (eseguendo uno script) sarà nello stesso spazio dei nomi Here. Quindi è più ampio di un singolo file JSL. Quindi, se A.jsl include B.jsl mentre Names Default To Here è abilitato, i simboli creati da A e B saranno entrambi disponibili nello stesso spazio dei nomi Here.
Per i locali di funzione, dovresti usare un elenco di locali:
/* 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)
);Oggetto: utilizzo dello spazio dei nomi integrato, nomi predefiniti qui, funzione variabili localiHmm scusa per la formattazione lì
//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;
);