Valori e riferimenti FormCalc
L'esecuzione FormCalc generale con EnableJavaScript implementa i riferimenti espliciti a oggetti tramite Ref(value), mentre le dichiarazioni di variabili ordinarie e gli argomenti ordinari di funzione copiano i valori degli oggetti
Parametri e risultato di Ref
Un accessor a un oggetto form esistente diventa un handle all'oggetto; passare un handle esistente ne preserva l'identità, un argomento null produce un handle null, e gli altri argomenti scalari restituiscono il loro valore scalare
I riferimenti espongono le proprietà e i metodi ordinari dei nodi come rawValue, parent, name, resolveNode e resolveNodes
Gli argomenti scalari delle built-in dereferenziano gli handle, le funzioni aggregate consumano i valori referenziati, e gli handle null conservano la semantica aritmetica e stringa del null; Exists restituisce 0 per un handle null
var copied = target
target = 8
other = copied
var p = Ref(target)
p = 9
var q = p
q = 10
Il primo blocco preserva il valore precedente di target in copied; il secondo blocco scrive target attraverso due handle che puntano allo stesso oggetto
Assegnazione e distacco
| Assegnazione | Comportamento |
|---|---|
p = Ref(other) | Rilega p all'altro oggetto |
p = 5 quando p è un riferimento | Scrive 5 nell'oggetto referenziato e preserva l'handle |
p = Null() quando p è un riferimento | Azzera il valore dell'oggetto referenziato e preserva l'handle |
p = Ref(Null()) | Stacca p e assegna alla variabile un valore null |
p = 5 dopo il distacco | Imposta a 5 la variabile stessa |
Le rideclarazioni di variabili e gli argomenti delle funzioni utente applicano le stesse regole di copia o riferimento; le funzioni possono ricevere, restituire e qualificare riferimenti espliciti
Uguaglianza e identità
Uguaglianza e disuguaglianza confrontano l'identità stabile dell'oggetto quando entrambi gli operandi sono riferimenti; gli operandi oggetto ordinari confrontano i loro valori, e il risultato è numerico 1 o 0
Due campi contenenti lo stesso testo risultano uguali per valore, ma Ref(first) eq Ref(second) restituisce 0 quando sono campi diversi
Istanze ripetute e handle conservati
Uno script object può conservare un handle esplicito tra eventi; l'handle risolve il nodo form corrente per identità stabile, quindi riordinare un subform ripetuto preserva l'occorrenza selezionata
Usare un handle dopo che la sua occorrenza è stata rimossa solleva un errore; le transazioni runtime ripristinano il numero di occorrenze, i valori dei campi e lo stato degli script object quando quell'errore abortisce l'evento
Il runtime fornisce automaticamente identità stabili per template e dati; i chiamanti diretti di eventi che omettono TXFAEventBinding.Identity ricevono un'identità unica basata sull'indice di binding e dovrebbero fornire identità stabili esplicite quando l'ordine di binding cambia
Migrazione
L'esecuzione generale precedente conservava oggetti nodo ordinari nelle dichiarazioni di variabili; sostituisci var p=target con var p=Ref(target) quando p deve restare un handle al nodo
I risultati di uguaglianza FormCalc generali ora usano 1 e 0 invece del testo booleano JavaScript; il codice che concatenava i risultati di uguaglianza deve aspettarsi la rappresentazione numerica
API correlate
Eval dinamico, HPDFXFACompileFormCalcEvent, TXFAEventBinding e Runtime XFA interattivo