الجبهة الديمقراطية هيكل

كولد فيوجن لديها اكثر من 250 وظائف في لغتها. انها سلسلة وظائف والتلاعب ، ومجموعة وظائف ومهام الهيكل ، وأنواع أخرى عديدة من وظائف. حتى مع هذا طائفة واسعة من المهام ، ولكن أحيانا قد ترغب في تحديد الدالة الخاصة بك أن يفعل الأشياء التي المضمنة في وظائف لا يمكن كولد فيوجن. وهذه المادة لا تصف كيفية استخدام CFSCRIPT فقط كيفية استخدام CFSCRIPT بالاقتران مع ظائف محددة للمستخدم. والمعرفة من قبل المستخدم وظيفة ، أو الجبهة الديمقراطية ، يمكن أن يبنى في CFSCRIPT ، CFML ، أو مزيج من الاثنين معا. الأجزاء التالية تصف كيفية بناء UDFs باستخدام CFSCRIPT. CFSCRIPT UDFs هي طبيعية جدا لأنها تحاكي في خلق وظيفة جافا سكريبت ، جافا ، والعديد من لغات البرمجة الأخرى التي قد تكون متالفا معها. بصفة عامة ، وظائف تتلقى واحدا أو أكثر الحجج وإرجاع نتيجة واحدة. بعض الوظائف (مثل كولد فيوجن من الآن () وظيفة) لا تأخذ في الحجج ، ولكن تقريبا جميع وظائف لا عودة نتيجة لذلك. والجبهة الديمقراطية الأساسية تم إنشاؤها باستخدام CFSCRIPT يبدو كما يلي :

 GetCurrentTime الدالة () (عودة TimeFormat (الآن () ، "ح : مم : ق ق ر ر") ؛) 
  

أربعة أمور فقط المطلوبة من أجل كل وظيفة هي الكلمة الدالة ، واسم وظيفة ، وأقواس بعد اسم ، والمتعرجة في مختلف أنحاء الجسم وظيفة. على الرغم من أن البيان هو عودة اختيارية من الناحية الفنية ، والعودة هو ما يجعل وظيفة مفيدة حقا ، وهذا البيان يمثل النتيجة عاد إلى رمز الذي يستدعي الدالة. ندعو الدالة التي نقوم بإنشائها كما كنا أي دالة مضمنة كولد فيوجن ، على النحو التالي :

 # GetCurrentTime () # 

يمكننا توسيع نطاق مهمتي من خلال تعريف متغير محلي ، على النحو التالي :

GetCurrentTime الدالة () (فار szTime = TimeFormat (الآن () ، "ح : مم : ق ق ر ر") ؛ عودة szTime ؛)

أكثر على الكلمة فار في الجزء التالي. يمكننا أيضا إضافة رمز لدينا وظيفة بين تعريف متغير وبيان العودة ، على النحو التالي :

GetCurrentTime الدالة () (فار szTime = TimeFormat (الآن () ، "ح : مم : ق ق ر ر") ؛ szTime = ReplaceNoCase (szTime ، "أنا" ، "في الصباح") ؛ szTime = ReplaceNoCase (szTime ، "بعد الظهر". "في المساء") ؛ عودة szTime ؛)

الجبهة الديمقراطية هذا هو مثال بسيط جدا لا يأخذ أي حجج. الآن لنلقي نظرة على فار في مزيد من التفاصيل. فار تعلن متغير هذا المحلية إلى وظيفة. إذا لم نستخدم فار ، على سبيل المثال ، يمكن أن نفعل ما يلي :

 myFn الدالة () (myVar = 1 ؛ العودة الحقيقية ؛)  # myFn () # # # myVar 

بعد استدعاء myFn () ، myVar يتوفر لرمز خارج الوظيفة. ذلك لأن أي تعريف متغير داخل CFSCRIPT باللغات لCFML. هذا هو البرمجة قذرة جدا لأنك يمكن أن يكون عن غير قصد خلق أو الكتابة المتغيرات أنك لم تكن تنوي أن تؤثر. myVar المحلية للحفاظ على myFn () بحيث أنه لا يمكن أن تسرب خارج الوظيفة ، واستخدام فار ، على النحو التالي :

 myFn الدالة () (myVar فار = 1 ؛ العودة الحقيقية ؛) 

الآن ، في محاولة لاستخدام myVar myFn خارج () رميات خطأ ، وهذا بالضبط ما تريد أن تفعله. جميع المتغيرات التي تم إنشاؤها باستخدام فار يجب تهيئة ؛ كولد فيوجن رميات خطأ إذا لم يتم. ثم لاحظ ، أيضا ، أنه لا يمكنك وضع فار الكلمة الرئيسية في أي مكان عدا في أعلى جدا من إعلان وظيفة. بإرجاع قيمة واحدة ، كما يظهر في المثال التالي :

myFn الدالة () (عودة TimeFormat (الآن () ، "ح : مم : ق ق ر ر") ؛)

حالما CFSCRIPT قاءات بيان العودة ، كولد فيوجن توقف تنفيذ الدالة وإرجاع القيمة التالية الكلمة العودة إلى رمز الاتصال. يمكنك أيضا مشروط بعودة قيم مختلفة على أساس الظروف المختلفة ، كما في التعليمات البرمجية التالية :

myFn الدالة () (اذا (IsDefined ( "Client.myVar")) (عودة Client.myVar ؛) والا (عودة TimeFormat (الآن () ، "ح : مم : ق ق ر ر") ؛))

كل مسار التحكم في وظيفة ويجب أن يعود إلى قيمة أو تحصل على نتائج غير متناسقة. وأفضل الممارسات ، وبالتالي ، تتمثل في تحديد القيمة الافتراضية العودة واستخدام واحد فقط العودة في بيان الإعلان الخاص بك وظيفة ، على النحو التالي :

myFn الدالة () (فار نتيجة = TimeFormat (الآن () ، "ح : مم : ق ق ر ر") ؛ إذا (IsDefined ( "Client.myVar")) (نتيجة = Client.myVar ؛) العودة إلى نتيجة ؛)

معظم وظائف اتخاذ واحد أو أكثر الحجج ، كما يظهر في المثال التالي :

 وظيفة add2 (firstNumber ، secondNumber) (عودة firstNumber + secondNumber ؛)  # add2 (1،2) # 

أسماء حجة تم تعريفها في قائمة داخل الأقواس بعد إعلان وظيفة. سترى أكثر تقدما من الحجج التي يستخدمها لاحقا في هذه المادة ، والمثال السابق استخدام الوسائط الموضعية ، وهذا يعني أن الحجة الأولى في استدعاء دالة تم تمريرها إلى الوسيطة الأولى في وظيفة ، والثانية في المكالمة الثانية وأصبح في وظيفة ، وهلم جرا. يمكنك أيضا اسم الحجج في مكالمة إذا كنت تريد تمريرها في ترتيب مختلف ، كما يلي :

 # add2 (secondNumber = 2 ، firstNumber = 1) # 

هذه الجملة ليست على نطاق واسع لانها اكثر صعوبة في القراءة قليلا ، وإنما يمكن أن تساعدك ، ومع ذلك ، إذا كنت لا تذكر على أمر من وظيفة للمعلمات. إذا كان أي من استدعاء دالة حجج واسمه ، ولكن ، يجب أن يدعى كل الحجج يكون. وظائف يمكن أن يسمى في أي مكان في غضون كولد فيوجن القالب ، حتى من داخل دالة أخرى كولد فيوجن. نأخذ المثال التالي :

 وظيفة myFn (myNum ، yourNum) (عودة myNum * yourNum ؛) myOtherFn الدالة () (فار num1 = RandRange (1،10) ؛ فار num2 = RandRange (1،10) ؛ myFn عودة (num1 ، num2) ؛) 

وثمة وظيفة ويمكن أيضا أن الكلمة نفسها. كتبنا الدالة التالية ، على سبيل المثال ، لحساب مضروب عدد (أ مضروب سيتم تعريفها في لحظة) :

 وظيفة مضروب (myNum) (اذا (myNum مكافئ 1) (العودة 1 ؛) والا (عودة myNum * مضروب (myNum -- 1) ؛  # مضروب (6) # 

مضروب 6 ، على سبيل المثال ، هو 6 × 5 × 4 × 3 × 2 × 1 ، أو 720. لحساب مضروب ، نعود عدد تمريرها إلى الدالة ، مضروبا في القادم أصغر مضروب (لأن مضروب 6 يمكن أيضا أن تكون ممثلة على النحو 6 × 5 مضروب). يجب أن تكون حذرا في خلق وظائف متكررة للتأكد من أن لديك حالة توقف. وفي حالتنا ، نحن وقف العودية كلما myNum هو 1. إذا لم يكن بناء وهو شرط وقف إلى حسابك في المنطق ، وكنت وضعت بناء على طلب في حلقة لا نهائية. نعرض لكم أن يتم الوصول إلى هياكل بالإشارة ، في حين أن المتغيرات الأخرى يتم الرجوع إليها من حيث القيمة. وينطبق الشيء نفسه على تمرير المتغيرات على وظيفة. إذا كنت لتمرير عدد من وظيفة ، وظيفة لديها نسخة محلية من هذا العدد ، وأية تعديلات التي تجعل وظائف لعدد لا تتكرر خارج استدعاء الدالة. الهياكل يتم تمريرها الى وظيفة بالإشارة ، ومع ذلك ، أية تعديلات يمكن أن يجعل من وظيفة إلى المعلمة هيكل أن ينظر خارج استدعاء الدالة.

مقال مقدم من نينا اتشي


تنويه :موقعنا على الانترنت ليست مسؤولة عن محتوى هذه المادة. Webarticles هو حر للمعلومات.
المهم : هذه المادة "الجبهة الديمقراطية هيكل" وقد ترجم من قبل البرمجيات التلقائي. نشعر بالاسف من اجل أي الأخطاء الإملائية التي قد حدث. شكرا لتفهمكم.


Online: 233 users browsing the articles directory   


  

|