FormCalc Values and References
تنفيذ FormCalc العام مع EnableJavaScript ينفّذ مراجع كائنات صريحة عبر Ref(value)، بينما إعلانات المتغيرات العادية وسائط الدوال العادية تنسخ قيم الكائنات
معاملات Ref ونتيجتها
الواصل إلى كائن نموذج قائم يصير handle كائنًا؛ وتمرير handle قائم يحفظ هويته، والوسيط null ينتج handle فارغًا، وسائط scalar الأخرى تعيد قيمتها الـ scalar
المراجع توفر خصائص وأساليب العقد العادية مثل rawValue وparent وname وresolveNode وresolveNodes
وسائط scalar المدمجة تفك handles، والدوال التجميعية تستهلك القيم المُشار إليها، وhandles الفارغة تحفظ دلالات الحساب والسلسلة للـ null؛ وExists تعيد 0 لـ handle فارغ
var copied = target
target = 8
other = copied
var p = Ref(target)
p = 9
var q = p
q = 10
الكتلة الأولى تحفظ القيمة السابقة لـ target في copied؛ والكتلة الثانية تكتب في target عبر handleين يشيران إلى الكائن نفسه
الإسناد والفصل
| الإسناد | السلوك |
|---|---|
p = Ref(other) | يعيد ربط p بالكائن الآخر |
p = 5 عندما يكون p مرجعًا | يكتب 5 في الكائن المُشار إليه ويحفظ الـ handle |
p = Null() عندما يكون p مرجعًا | يمسح قيمة الكائن المُشار إليه ويحفظ الـ handle |
p = Ref(Null()) | يفصل p ويعطي المتغير قيمة null |
p = 5 بعد الفصل | يضبط المتغير نفسه إلى 5 |
إعادة إعلان المتغيرات وسائط دوال المستخدم تطبق قواعد النسخ أو المرجع نفسها؛ والدوال يمكنها استقبال المراجع الصريحة وإعادتها وتأهيلها
المساواة والهوية
المساواة وعدمها تقارنان هوية الكائن الثابتة عندما يكون كلا الطرفين مرجعين؛ وأطراف الكائنات العادية تقارن قيمها، والنتيجة عددية 1 أو 0
حقلان يحتويان النص نفسه يقارنان متساويين بالقيمة، لكن Ref(first) eq Ref(second) تعيد 0 عندما يكونان حقلين مختلفين
النسخ المتكررة وhandles المحفوظة
كائن سكربت يمكنه حفظ handle صريح عبر الأحداث؛ والـ handle يحل عقدة النموذج الحالية بهوية ثابتة، فإعادة ترتيب subform متكرر تحفظ النسخة المنتقاة
استخدام handle بعد إزالة نسخته يثير خطأ؛ ومعاملات بيئة التشغيل تستعيد عدد النسخ وقيم الحقول وحالة كائن السكربت عندما يجهض ذلك الخطأ الحدث
بيئة التشغيل تزوّد هويات القالب والبيانات الثابتة تلقائيًا؛ ومستدعيو الأحداث المباشرون الذين يحذفون TXFAEventBinding.Identity يتلقون هوية فهرس ارتباط فريدة وعليهم تزويد هويات ثابتة صريحة عندما يتغيّر ترتيب الربط
الترحيل
التنفيذ العام الأقدم كان يحفظ كائنات العقد العادية في إعلانات المتغيرات؛ استبدل var p=target بـ var p=Ref(target) عندما يجب أن يبقى p handle عقدة
نتائج مساواة FormCalc العام تستخدم الآن 1 و0 بدلًا من النص boolean بـ JavaScript؛ والشيفرة التي ربطت نتائج المساواة ينبغي أن تتوقع التمثيل العددي
واجهات مرتبطة
Eval الديناميكية, HPDFXFACompileFormCalcEvent, TXFAEventBinding وبيئة تشغيل XFA التفاعلية