الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

من الميزات القادمة مع Vb2010 فيما يتعلق بتعابير لمدا

بدأه محمد سامر أبو سلو في 5 مايو 2009 · 0 رد · 641 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

هذه مأخوذة من مقالة تتحدث عن النسخة ما قبل النسخة التجريبية

تعابير لمدا متعددة الأسطر

تعابير لمدا المتعددة الأسطر هي تعابير لمدا تمثل إجرائية تحتوي على تعبير أو أكثر كما في المثال

Dim nums() As Integer = {1, 2, 3, 4, 5}

nums = Array.FindAll(nums, Function(n)
								Console.WriteLine("testing " & n)
							   Return n > 2

					End Function)

وتماما كتعابير لمدا الاعتيادية فالمترجم سيستدل على نوع كل محدد عندما يكون ذلك ممكنا كما سيستدل أيضا على النوع المعاد من تعبير لمدا باستخدام ألغوريتم النوع المسيطر للاختيار بين الأنواع المعادة من كل تعبير Return انظر المثال

'numDelegate is an anonymous delegate compatible with Func(Of Integer,  
Double)
Dim numDelegate = Function(n As Integer)
					  If n Mod 2 = 0 Then
						  Return 3
					  Else
						  Return 3.14
					  End If
				  End Function

ففي هذه الحالة يرى المترجم أن النوع المعاد قد يكون Integer أو Double وبهذا فإنه يختار Double بما أن مجاله أعرض من Integer كما يمكنك تحديد النوع المعاد من التعبير باستخدام قسم As ففي هذه الحالة سيستخدم المترجم النوع الذي قمت بتحديده ولن يقوم بمحاولة الاستدلال على النوع المعاد من التعبير

Dim lambda = Function(n As Integer) As Single
				 If n Mod 2 = 0 Then
					 Return 3
				 Else
					 Return 3.14
				 End If
			 End Function

تعابير لمدا كإجراءات

تماما كما نستخدم الكلمة المحجوزة Function لإنشاء تعبير لمدا متعدد الأسطر تعيد قيمة يمكن استخدام الكلمة المحجوزة Sub لإنشاء تعبير لمدا لا يعيد قيمة

Array.ForEach(nums, Sub(n)
						Console.Write("Number: ")
						Console.WriteLine(n)
					End Sub)

تعابير لمدا الإجرائية وحيدة السطر

يدعم visual Basic 9.0 تعابير لمدا وحيدة السطر التي تعيد قيمة فالكود التالي سيعيد خطأ على النسخة 9.0

'Error - Console.WriteLine doesn't return a value
Array.ForEach(nums, Function(n) Console.WriteLine(n))

والآن مع Visual Basic 10.0 أصبح يمكن كتابة تعابير لمدا لا تعيد قيمة كما في المثال

'Valid
Array.ForEach(nums, Sub(n) Console.WriteLine(n)) 'Valid

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…