Utilizzo dello spazio dei nomi integrato, Nomi predefiniti su qui, variabili locali della funzioneCiao, ho una domanda sugli spazi dei nomi negli script del modulo e sulle funzioni all'interno di quegli script.
A quanto ho capito, qualsiasi variabile definita dove Names Default to Here () è true verrà assegnata in uno spazio dei nomi "qui". Quello di cui non sono sicuro è l'ambito di quello spazio dei nomi. "Qui" è sempre definito come lo script completo (ad esempio all'interno di un modulo) o può anche creare variabili locali alle singole funzioni all'interno di uno script? Qual è il modo giusto per creare variabili locali all'interno di una funzione? Esiste un modo per le variabili definite in ciascuna funzione di essere locali solo per quella funzione e non per lo 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 su qui, variabili locali delle funzioniHmm 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;
);Oggetto: utilizzo dello spazio dei nomi integrato, nomi predefiniti su qui, variabili locali delle funzioniNomi predefiniti qui (1) significa che tutti i simboli non qualificati sono stati utilizzati / creati durante quello 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 le funzioni locali, dovresti usare un elenco di variabili 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 su qui, variabili locali delle funzioniFatto! La lingua "per invio" è molto utile.
Di conseguenza, 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 << Crea istanza, in modo che ogni modulo abbia il proprio spazio dei nomi Here?
In breve, quando si utilizza una jmpapp, Here si riferirà tipicamente a ciascun modulo o all'app nel suo insieme?Re: utilizzo dello spazio dei nomi integrato, nomi predefiniti su qui, funzioni 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 << Crea istanza, in modo che ogni modulo abbia il proprio spazio dei nomi Here?
In breve, quando si utilizza un jmpapp, Here si riferirà tipicamente a ciascun modulo o all'app nel suo insieme?
@EvanMcCorkle