05-10-12, 01:27 AM
كاتب الموضوع : samerselo
هذه مأخوذة من مقالة تتحدث عن النسخة ما قبل النسخة التجريبيةتعابير لمدا متعددة الأسطر
تعابير لمدا المتعددة الأسطر هي تعابير لمدا تمثل إجرائية تحتوي على تعبير أو أكثر كما في المثال
كود :
Dim nums() As Integer = {1, 2, 3, 4, 5}
nums = Array.FindAll(nums, Function(n)
Console.WriteLine("testing " & n)
Return n > 2
End Function)
كود :
'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
كود :
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))
كود :
'Valid
Array.ForEach(nums, Sub(n) Console.WriteLine(n)) 'Valid