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

ToewijzingGedrag
p = Ref(other)Koppelt p opnieuw aan het other-object
p = 5 wanneer p een referentie isSchrijft 5 naar het gereferenced object en behoudt de handle
p = Null() wanneer p een referentie isWist 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 detachZet 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