Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

VS2010 RC1: Multiline Lambda Expressions e Subroutines

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:

Henrry Pires disse...

de facto era algo que já fazia falta ao VB

Mensagens Recentes



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico