تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Lambda Expressions من جديد VB2008
#1
كاتب الموضوع : samerselo


الـ Lambda Expression هو وظيفة Function بدون اسم تحتسب وتعيد قيمة وحيدة كما يمكن استخدامها في التعابير التي تطلب إجراءات مفوضة Delegate والمثال التالي عن هذه التعابير يأخذ قيمة ويعيد الناتج بعد إضافة واحد لها

كود :
Function (num As Integer) num + 1
كما يمكنك إسناد هذه الوظيفة لمتغير وتمرير القيمة له

كود :
Dim add1 = Function(num As Integer) num + 1
Console.WriteLine(add1(5))
كما يمكنك تعريف وتنفيذ الوظيفة بنفس الوقت

كود :
Console.WriteLine((Function(num As Integer) num + 1)(5))
كما يمكن أن تستخدم Lambda Expressions كقيمة معادة عند استدعاء وظيفة أو تمريرها كوسيط لإجراء مفوض ففي المثال التالي تستخدم Lambda Expressions بوليانية كوسائط للإجراء testResult حيث تطبق الطريقة فحص بولياني لوسيط من النوع Integer ويظهر القيمة Success إذا كانت قيمة Lambda Expression هي True أو Failure إن كانت قيمته False

كود :
Module Module2

Sub Main()
' The following line will print Success, because 4 is even.
testResult(4, Function(num) num Mod 2 = 0)
' The following line will print Failure, because 5 is not > 10.
testResult(5, Function(num) num > 10)
End Sub

' Sub testResult takes two arguments, an integer value and a
' Boolean function.
' If the function returns True for the integer argument, Success
' is displayed.
' If the function returns False for the integer argument, Failure
' is displayed.
Sub testResult(ByVal value As Integer, ByVal fun As Func(Of Integer, Boolean))
If fun(value) Then
Console.WriteLine("Success")
Else
Console.WriteLine("Failure")
End If
End Sub

End Module
وتكون صيغتها على الشكل
• هذه التعابير لا تملك اسما
• لا يمكن استخدام المعدلات معها مثل Overloads أو Overrides
• لا تستخدم قسم AS لتحديد نوع القيمة المعادة وبدلا عن ذلك يكون نوع القيمة المعادة هو نوع القيمة التي يشكلها جسم الإجراء فإن كان جسم الإجراء مثلا Cust.City = "London" فتكون القيمة المعادة بوليانية
• جسم الإجراء يجب أن يكون تعبير وليس تصريح ويمكن أن يحتوي على استدعاء لوظيفة Function ولكنه لا يمكن أن يستدعي إجراء Sub
• لا يوجد تعبير Return وتكون القيمة المعادة هي قيمة ذلك التعبير الذي يشكل جسم الوظيفة
• لا يوجد تعبير End
• يجب أن تكون جميع الوسائط محددة النوع أو تكون جميعها بأنواع بالإشارة
• غير مسموح بالوسائط الاختيارية
• الوسائط Generic غير مسموح بها
ونتيجة لهذه القواعد سنرى أن أي تعبير Lambda Expression سيكون بسيطا وغير معقد
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Nullable Value Types في VB2008 oneyemenweb2 0 354 06-10-12, 11:37 PM
آخر رد: oneyemenweb2
  معلومة ::: Regular Expressions RaggiTech 6 499 06-10-12, 09:06 PM
آخر رد: RaggiTech
  كونترول جديد من مايكروسوفت MsChart Control RaggiTech 1 548 05-10-12, 03:04 PM
آخر رد: RaggiTech
  نوع بيانات جديد (تاريخ) RaggiTech 0 436 05-10-12, 03:34 AM
آخر رد: RaggiTech
  جديد 2010- اكتب الكود الذي سيستخدم فئتك ثم قم بإنشائها RaggiTech 0 336 03-10-12, 12:27 PM
آخر رد: RaggiTech
  الطرائق المُوَسِّعة Extension Methods من جديد VB2008 RaggiTech 1 445 02-10-12, 07:31 PM
آخر رد: RaggiTech
  الاستدلال المحلي على النوع Local Type Inference من جديد VB2008 RaggiTech 0 406 02-10-12, 09:43 AM
آخر رد: RaggiTech
  الأنواع المجهولة Anonymous Types، من جديد VB 2008 RaggiTech 0 360 02-10-12, 08:57 AM
آخر رد: RaggiTech
  أفضل طريقة لإنشاء كائن جديد - شارك في النقاش RaggiTech 1 328 01-10-12, 11:07 PM
آخر رد: RaggiTech
  Private Text Encryption -خدمة للمبرمجين في جديد عالم التشفير- RaggiTech 0 491 01-10-12, 06:36 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم