قوالب وظيفة
وظائف طاقتها تستخدم عادة لتنفيذ عمليات مماثلة على أنواع البيانات المختلفة. ArraySize () مثال بسيط من هذه الوظيفة في MQL5. تقوم بإرجاع حجم أي نوع من مجموعة. في الواقع، هو فوق طاقتها هذه الوظيفة النظام والتنفيذ الكامل لمثل هذا الزائد هو مخفي من مطوري التطبيقات MQL5:
الباحث ArraySize (
الفراغ & مجموعة [] // مجموعة فحص
)؛
وهو ما يعني أن مترجم لغة MQL5 إدراج تنفيذ اللازم لاستدعاء كل من هذه الوظيفة. على سبيل المثال، وهذا هو كيف يمكن القيام به لصفائف نوع صحيحة:
الباحث ArraySize (
الباحث & مجموعة [] // مجموعة مع عناصر نوع int
)؛
ArraySize () وظيفة يمكن عرضها على النحو التالي ل MqlRates نوع مصفوفة للعمل مع الاقتباسات في تنسيق البيانات التاريخية:
الباحث ArraySize (
MqlRates & مجموعة [] // مجموعة مليئة القيم MqlRates نوع
)؛
وهكذا، وأنها مريحة جدا للاستخدام نفس وظيفة للعمل مع أنواع مختلفة. ومع ذلك، ينبغي أن يتم كل الأعمال التمهيدية من - يجب على وظيفة اللازمة طاقتها لجميع أنواع البيانات التي يجب أن تعمل بشكل صحيح مع.
هناك حل مناسب. إذا يجب أن تنفذ عمليات مماثلة لكل نوع من أنواع البيانات، فمن الممكن استخدام قوالب وظيفة. في هذه الحالة، وهو مبرمج يحتاج لكتابة واحدة فقط وصف القالب وظيفة. عندما تصف القالب في مثل هذه الطريقة، يجب أن تحدد فقط بعض معلمة رسمية بدلا من نوع بيانات محددة وظيفة يجب أن تعمل مع. سوف المترجم تولد تلقائيا وظائف مختلفة لمعالجة المناسب لكل نوع على أساس أنواع الحجج المستخدمة عند استدعاء الدالة.
يبدأ تعريف قالب وظيفة مع الكلمة قالب تليها قائمة المعلمات رسمية في أقواس زاوية. ويسبق كل معلمة رسمية من قبل الكلمة typename. هي مدمجة في أنواع معلمة رسمية أو أنواع المعرفة من قبل المستخدم. يتم استخدامها:
لتحديد أنواع الحجج وظيفة،
لتحديد أنواع قيمة الإرجاع الدالة،
للإعلان عن المتغيرات داخل تعريف وظيفة
عدد من المعلمات القالب لا يمكن أن يتجاوز الثمانية. يجب أن تظهر كل معلمة رسمية في تعريف قالب في قائمة معلمات الدالة مرة واحدة على الأقل. يجب أن يكون كل اسم معلمة رسمية فريدة من نوعها.
وفيما يلي مثال على قالب وظيفة للبحث عن أعلى قيمة في مجموعة من أي نوع عددي (عدد صحيح والأرقام الحقيقية)