كشف دالة (Visual Basic)
قم بتعريف الاسم, المعلمات والتعليمات البرمجية التي تعرّف Function الإجراء.
ملاحظة
Visual Basic 2008 يقدم تعبيرات لامدا ، والتي تتيح لك إلى تعريف تعبيرات الدالة في سطر. للمزيد من المعلومات، راجع تعبير دالة وتعبيرات لامدا.
[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ]
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
[ statements ]
[ Exit Function ]
[ statements ]
End Function
الأجزاء
attributelist
اختياري. راجع قائمة سمة.accessmodifier
اختياري. يمكن أن يكون أحد الخيارات التالية:proceduremodifiers
اختياري. يمكن أن يكون أحد الخيارات التالية:MustOverride Overrides
NotOverridable Overrides
Shared
اختياري. راجع مشترك.Shadows
اختياري. راجع الظلال.name
مطلوبة. اسم الاجراء. انظر أسماء العنصر المعرفtypeparamlist
اختياري. قائمة معلمات النوع لإجراء عام. راجع قائمة النوع.parameterlist
اختياري. قائمة أسماء المتغيرات المحلية يمثل معلمات هذا إجراء. انظر قائمة المعلمةreturntype
مطلوب إذا كان Option Strict هو On. نوع بيانات القيمة التي تم إرجاعها بواسطة هذا إجراء.Implements
اختياري. يشير إلى أن هذا إجراء يقوم بتطبيق واحد أو أكثر من Function الإجراءات, كل واحد معرّف في واجهة تم تطبيقها بواسطة الفئة المحتوية لهذا الإجراء التي أو البنية. انظر جملة التنفيذimplementslist
مطلوب إذا كان Implements يتم توفيره. قائمة منFunction الإجراءات التي يتم تطبيقها.implementedprocedure [ , implementedprocedure ... ]
كل implementedprocedure يحتوي على بناء الجملة والأجزاء التالية:
interface.definedname
جزء
الوصف
interface
مطلوبة. اسم واجهة تم تطبيقها بواسطة الفئة المحتوية لهذا الإجراء أو البنية.
definedname
مطلوبة. اسم حيث يتم تعريف الإجراء في interface.
Handles
اختياري. يشير إلى أن هذا إجراء يمكنه معالجة حدث معينة أو أكثر. انظر عبارة المؤشرات (Visual Basic)eventlist
مطلوب إذا كان Handles يتم توفيره. قائمة الأحداث التي يعالجها هذا الإجراء.eventspecifier [ , eventspecifier ... ]
كل eventspecifier يحتوي على بناء الجملة والأجزاء التالية:
eventvariable.event
جزء
الوصف
eventvariable
مطلوبة. متغير الكائن المعرف مع نوع البيانات لفئة أو بنية التي ترفع الحدث.
event
مطلوبة. اسم الحدث الذي يعالجه هذا الإجراء.
statements
اختياري. مقاطع من الكشوف ليتم تنفيذها داخل هذا الإجراء.EndFunction
ينهي تعريف هذا الإجراء.
ملاحظات
يجب أن تكون كل التعليمات البرمجية القابلة للتنفيذ داخل إجراء. يتم تعريف كل إجراء بدوره داخل فئة أو بنية أو وحدة نمطية و التي تسمى بـالفئة الحاوية أو البنية أو وحدة نمطية.
استخدم إجراء Function عندما تريد إرجاع قيمة إلى التعليمات البرمجية المستدعية. استخدم إجراء Sub عندما لا تحتاج إلى إرجاع قيمة.
يمكنك تعريف إجراء Function فقط على المستوى وحدة نمطية. وهذا يعني تعريف السياق لدالة يجب أن يكون فئة، بنية، وحدة نمطية، أو واجهة و لا يمكن أن يكون ملف المصدر، مساحة الاسم،إجراء أو مقطع . لمزيد من المعلومات، راجع سياقات الـتعريف و مستويات الوصول الافتراضية.
Function الإجراءات تقتصر على الوصول العام. يمكنك ضبط مستويات الوصول الخاصة بهم بمعدلات الوصول.
يمكنك استدعاء إجراء Function على الجانب الأيسر من تعبير عندما تريد استخدام القيمة التي تم إرجاعها بواسطة الدالة. استخدم إجراء Function بنفس الطريقة التي تستخدم فيها أي دالة مكتبة مثل Sqrt, Cos، أو ChrW.
استدعاء إجراء Function باستخدام اسم الإجراء, متبوعاً بقائمة الوسائط في أقواس في تعبير. يمكنك حذف الأقواس فقط إذا لم يتم توفير أية وسائط. على الرغم من ذلك، التعليمات البرمجية قابلة للقراءة أكثر إذا قمت دائماً بإضافة الأقواس.
يمكن استدعاء دالة أيضاً باستخدام كشف Call , في حالة تجاهل قيمة الارجاع.
القواعد
نوع الإرجاعكشف الـ Function يمكن أن يعرف نوع البيانات للقيمة التي يرجعها. يمكنك تحديد أي نوع بيانات أو اسم لقائمة تعداد ، فئة، بنية أو واجهة.
إذا لم تعين returntype, يرجع الاجراء Object
التنفيذ. إذا كانت هذا الاجراء يستخدم الكلمة الأساسية Implements ,يجب أن تملك الفئة الحاوية أو البنية أيضا على كشف Implements التي تلي مباشرة Class أو Structure الكشف الخاص به. عبارة الـ Implements يجب أن يضم كل واجهة محددة في implementslist. ومع ذلك، الاسم الذي تعرّفه الواجهة Function (في definedname) لا يحتاج أن يكون نفس اسم هذا الإجراء (في name).
السلوك
الخروج من إجراء. عندما يرجع إجراء Function إلى التعليمات البرمجية المستدعية، يستمر التنفيذ مع الكشف الذي يلي الكشف الذي استدعاه.
عبارات Exit Function و Return تسبب خروج فوري من إجراء Function. أي عدد من عبارات Exit Function و Return يمكن أن تظهر أي مكان في الإجراء، كما يمكن خلط عبارات Exit Function و Return .
قيمة الإرجاع. لإرجاع قيمة من دالة, يمكنك إما تعيين القيمة إلى اسم الدالة أو تضمينها في Return الكشف. يعين المثال التالي القيمة المرجعة لاسم دالةmyFunction ثم يستخدم كشف Exit Function للرجوع.
Function myFunction(ByVal j As Integer) As Double myFunction = 3.87 * j Exit Function End Function
إذا كنت تستخدم Exit Function بدون تعيين قيمة إلى name، يقوم الإجراء بإرجاع القيمة الافتراضية لـ نوع البيانات المحدده في returntype . اذا لم يتم تحديد returntype , يقوم الإجراء بإرجاع Nothing، القيمة الافتراضية لـ Object.
كشف الـ Return يعيّن قيمة الإرجاع و يخرج من الدالة في نفس الوقت. يـوضح المثال التالي ذلك.
Function myFunction(ByVal j As Integer) As Double Return 3.87 * j End Function
استكشاف الأخطاء وإصلاحها
- ترتيب التنفيذ. يعيد ترتيب Visual Basic أحياناً التعبيرات الرياضية لزيادة الكفاءة الداخلية. لهذا السبب، تجنب استخدام إجراء Function في تعبير حسابي عندما تغير دالة قيمة المتغيرات في التعبير نفسه.
مثال
يستخدم المثال التالي كشف Function لتعريف الاسم, المعلمات، و التعليمات البرمجية التي تشكل جسد إجراء Function . معدّل الـ ParamArray يمكّن الدالة من قبول عدد متغير من الوسائط..
Public Function calcSum(ByVal ParamArray args() As Double) As Double
calcSum = 0
If args.Length <= 0 Then Exit Function
For i As Integer = 0 To UBound(args, 1)
calcSum += args(i)
Next i
End Function
يستدعي المثال التالي دالة تم تعريفها في المثال السابق.
Module Module1
Sub Main()
' In the following function call, calcSum's local variables
' are assigned the following values: args(0) = 4, args(1) = 3,
' and so on. The displayed sum is 10.
Dim returnedValue As Double = calcSum(4, 3, 2, 1)
Console.WriteLine("Sum: " & returnedValue)
' Parameter args accepts zero or more arguments. The sum
' displayed by the following statements is 0.
returnedValue = calcSum()
Console.WriteLine("Sum: " & returnedValue)
End Sub
Public Function calcSum(ByVal ParamArray args() As Double) As Double
calcSum = 0
If args.Length <= 0 Then Exit Function
For i As Integer = 0 To UBound(args, 1)
calcSum += args(i)
Next i
End Function
End Module
راجع أيضًا:
المهام
كيفية القيام بما يلي: استخدام فئة عامة
إجراءات استكشاف الأخطاء وإصلاحها