Um artigo anterior, publicado neste blog, foi dedicado a Lambda Expressions, explicando de um modo geral o seu funcionamento e o seu sintaxe.
Com a chegada do Visual Studio 2010, algumas das limitações que existiam e que já estavam disponível no C# 3.0, foram introduzidas, já sendo agora possível criar expressões em múltiplas linhas e expressões que não retornam resultados.
Podemos então criar lambda expressions em uma linha ou em várias linhas:
' Função single-line
Dim result1 = Function(x) x * x
' Função multi-line
Dim result2 = Function(x)
Return (x * x)
End Function
' Mostra os resultados
Debug.WriteLine(result1(5))
Debug.WriteLine(result2(5))
E podemos também criar lambda expressions que não retornam resultados, substituindo a keyword Function() por Sub():
' Subrotina single-line
Dim showResult1 = Sub(result As Integer) Debug.WriteLine(result.ToString())
' Subrotina multi-line
Dim showResult2 = Sub(result As Integer)
Debug.WriteLine(result.ToString())
End Sub
' Mostrando os resultados
showResult1(12345)
showResult2(12345)
Mais alguns exemplos, um pouco mais complexos, de como podemos criar expressões em várias linhas, com diferentes validações e retornando ou não resultados:
Dim listValues As New List(Of Integer) From
{1, 2, 3, 4, 5, 6, 7, 8}
' Irá mostrar os resultados com diferentes outputs para
' os números superiores, inferiores e iguais a 5
Array.ForEach(listValues.ToArray,
Sub(x)
If x > 5 Then
Debug.WriteLine(x.ToString & " é maior que 5")
ElseIf x = 5 Then
Debug.WriteLine(x.ToString & " é o número certo")
Else
Debug.WriteLine(x.ToString & " é menor que 5")
End If
End Sub)
' Irá mostrar os resultados e irá colocar na variável 'result', todos os
' números superiores a 5, ou seja, criará um array com os número 6, 7 e 8
Dim result = Array.FindAll(listValues.ToArray,
Function(x)
Debug.WriteLine(x)
Return x > 5
End Function)
Mais algumas melhorias que vêm ajudar a tornar as lambda expressions mais versáteis e com cada vez com mais aplicação!
1 comentários:
de facto era algo que já fazia falta ao VB
Enviar um comentário