Neste artigo vou apresentar um dos novos recursos da linguagem Visual Basic 15 : a classe Tuple. |
Nenhum recurso é "completo", mas eles oferecem
abordagens que aplicações Visual Basic podem usar para
consumir bibliotecas C# que fazem uso desses recursos.
Neste artigo vou apresentar a classe Tuple.
O tipo Tuple fornece um mecanismo para criar uma classe com vários itens nele sem uma definição de tipo separada. (Não podemos modificar um Tuple já criado.)
Apresentando a classe Tuple
O .NET Framework possui uma classe Tuple desde sua versão 4, e , como Tuple é uma classe isso faz com que seja necessário alocar memória para sua utilização.
Uma tupla é uma estrutura
de dados que tem um número específico e uma seqüência de
elementos.
O .NET Framework suporta diretamente tuplas com um a
sete elementos. Além disso, você pode criar tuplas de
oito ou mais elementos aninhando objetos de tupla na
propriedade Rest de um objeto
Tuple (Of T1, T2, T3, T4, T5,
T6, T7, TRest).
As Tuplas são comumente usadas de quatro maneiras:
Abaixo temos a assinatura das Tuples :
Public Sub New ( item1 As T1, _
item2 As T2, _
item3 As T3, _
item4 As T4, _
item5 As T5, _
item6 As T6, _
item7 As T7, _
rest As TRest _
)
|
Cada uma delas possui propriedades somente-leitura chamadas item1, item2, etc., uma para cada tipo de parâmetro.
Assim, basicamente a classe Tuple() fornece métodos estáticos para criar objetos de coleção de itens.
Criando
tuples
Embora você possa criar uma instância de uma classe
tuple chamando seu construtor de classe, o código
para fazê-lo pode ser complicado.
A seguir temos um exemplo que usa o construtor da classe para criar uma 7-tuple que contém dados demográficos da cidade de Nova York:
Module Module1
Sub Main()
' Cria uma 7-tuple.
Dim populacao As New Tuple(Of String, Integer, Integer, Integer, Integer, Integer, Integer) _
("Nova York", 7891957, 7781984, 7894862, 7071639, 7322564, 8008278)
' Exibe o primeiro e o ultimo elemento
Console.WriteLine("População de {0} em 2000: {1:N0} milhões", populacao.Item1, populacao.Item7)
Console.ReadKey()
End Sub
End Module
|
O resultado pode ser visto abaixo:
O tipo Tuple fornece métodos auxiliares que você pode chamar para instanciar objetos tuple sem precisar especificar explicitamente o tipo de cada componente de tupla.
A seguir temos o mesmo objeto tuple criado pela utilização de método de ajuda Create :
Module Module1
Sub Main()
' Cria uma 7-tuple.
' Dim população As New Tuple(Of String, Integer, Integer, Integer, Integer, Integer, Integer) _
' ("Nova York", 7891957, 7781984, 7894862, 7071639, 7322564, 8008278)
Dim populacao = Tuple.Create("Nova York", 7891957, 7781984, 7894862, 7071639, 7322564, 8008278)
' Exibe o primeiro e o ultimo elemento
Console.WriteLine("População de {0} em 2000: {1:N0} milhões", populacao.Item1, populacao.Item7)
Console.ReadKey()
End Sub
End Module
|
Os métodos de ajuda
Create suportam diretamente a criação de objetos
tuple que têm de um a oito componentes (isto é,
singletons através de octuples). Embora não haja
limite prático para o número de componentes que uma
tupla pode ter, os métodos auxiliares não estão
disponíveis para criar uma tupla com nove ou mais
componentes.
Para criar essa mesma tupla usando o construtor, você
deve chamar o construtor assim :
Tuple(Of T1, T2, T3, T4, T5, T6, T7, TRest).Tuple(Of
T1, T2, T3, T4, T5, T6, T7, TRest).
Usando uma Tuple em uma função
Podemos usar as Tuples para passar ou retornar vários valores de uma função.
A seguir temos um exemplo que mostra como usar um tipo de referência, no caso um StringBuilder, em uma Tuple passando o valor por referência para uma função.
Imports System.Text
Module Module1
Sub Main()
' Usa o objeto StringBuilder em uma tuple
Dim builder As StringBuilder = New StringBuilder()
builder.Append("Exemplo de StringBuilder")
' Cria uma nova instância da tuple com 3 items
Dim tuple As Tuple(Of String, StringBuilder, Integer) =
New Tuple(Of String, StringBuilder, Integer)("Valor do item1", builder, 2017)
' Passa a tuple como parametro
TrataTuple(tuple)
End Sub
Sub TrataTuple(ByRef tuple As Tuple(Of String, StringBuilder, Integer))
' Avalia a tuple e exibe os valores
Console.WriteLine(tuple.Item1)
Console.WriteLine(tuple.Item2)
Console.WriteLine(tuple.Item3)
End Sub
End Module
|
Observe que estamos passando o objeto tuple por referência: ByRef.
O resultado pode ser visto abaixo:
Pegue o projeto completo aqui: VB15_Tuplas.zip
(Disse Jesus) "Se vós estiverdes em mim,
e as minhas palavras estiverem em vós, pedireis tudo o que quiserdes, e vos será
feito. "
João 15:7
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: