FormCalc Values and References
Algemene FormCalc-executie met EnableJavaScript implementeert expliciete objectreferenties via Ref(value), terwijl gewone variabelendeclaraties en gewone functieargumenten objectwaarden kopiƫren
Ref-parameters en resultaat
Een accessor naar een bestaand formulierobject wordt een object-handle; een bestaande handle doorgeven behoudt diens identiteit, een null-argument levert een null-handle op, en andere scalar-argumenten geven diens scalar-waarde terug
Referenties leveren gewone node-properties en -methodes zoals rawValue, parent, name, resolveNode en resolveNodes
Scalar built-in argumenten dereferencen handles, aggregaatfuncties consumeren gereferenced waarden, en null-handles behouden null arithmetic- en string-semantics; Exists geeft 0 terug voor een null-handle
var copied = target
target = 8
other = copied
var p = Ref(target)
p = 9
var q = p
q = 10
Het eerste blok behoudt de vorige waarde van target in copied; het tweede blok schrijft target via twee handles die naar hetzelfde object verwijzen
Toewijzing en detach
| Toewijzing | Gedrag |
|---|---|
p = Ref(other) | Koppelt p opnieuw aan het other-object |
p = 5 wanneer p een referentie is | Schrijft 5 naar het gereferenced object en behoudt de handle |
p = Null() wanneer p een referentie is | Wist de waarde van het gereferenced object en behoudt de handle |
p = Ref(Null()) | Detacht p en geeft de variabele een null-waarde |
p = 5 na detach | Zet de variabele zelf op 5 |
Variabele-herdeclaraties en user function-argumenten passen dezelfde kopie- of referentieregels toe; functies kunnen expliciete referenties ontvangen, teruggeven en kwalificeren
Gelijkheid en identiteit
Gelijkheid en ongelijkheid vergelijken stabiele objectidentiteit wanneer beide operanden referenties zijn; gewone objectoperanden vergelijken diens waarden, en het resultaat is numerieke 1 of 0
Twee velden met dezelfde tekst vergelijken op waarde gelijk, maar Ref(first) eq Ref(second) geeft 0 terug wanneer het verschillende velden zijn
Herhaalde instances en vastgehouden handles
Een script-object kan een expliciete handle over events heen vasthouden; de handle resolvet de huidige formulier-node op stabiele identiteit, dus een herhaalde subform herordenen behoudt de gekozen occurrence
Een handle gebruiken nadat diens occurrence is verwijderd raiset een fout; runtime-transacties herstellen occurrence-aantal, veldwaarden en script-object-status wanneer die fout het event afbreekt
De runtime levert stabiele template- en data-identiteiten automatisch aan; directe event-aanroepers die TXFAEventBinding.Identity weglaten ontvangen een unieke binding-index-identiteit en moeten expliciete stabiele identiteiten aanleveren wanneer de bindingsvolgorde verandert
Migratie
Eerdere algemene executie hield gewone node-objecten vast in variabelendeclaraties; vervang var p=target door var p=Ref(target) wanneer p een node-handle moet blijven
Algemene FormCalc-gelijkheidsresultaten gebruiken nu 1 en 0 in plaats van JavaScript boolean-tekst; code die gelijkheidsresultaten concateneert moet de numerieke representatie verwachten
Related APIs
Dynamic Eval, HPDFXFACompileFormCalcEvent, TXFAEventBinding en Interactive XFA Runtime