As tuplas do C# são um novo recurso do C# 7. Vou lhe mostrar os conceitos básicos de como as tuplas do C# funcionam. Também vou misturar um pouco de Couchbase para mostrar as tuplas em ação. No entanto, se você não quiser instalar o Couchbase apenas para brincar com tuplas, não se preocupe, você ainda poderá acompanhar o processo.

Observação: Se você estiver usando o C# há algum tempo, talvez se lembre do Classe Tuple que foi introduzida no .NET 4. Essa classe ainda existe, mas não é a mesma coisa que o novo recurso de tupla do C#.

O que são tuplas C#?

Uma "tupla" é o nome de um conceito matemático que é apenas uma lista de elementos. Na família de linguagens LISP, a codificação é construída quase que inteiramente em torno da ideia de que tudo é uma lista. Mais uma vez, o C# pega emprestado o núcleo de uma ideia do mundo da programação funcional e o integra em uma linguagem não funcional. Assim, temos as tuplas do C# (confira o Proposta original da tupla C# por Mads Torgersen para obter mais detalhes e informações básicas).

Lembra-se dos tipos anônimos?

Mas, para simplificar, vamos considerar algo com o qual você já deve estar familiarizado no C#, um tipo anônimo. Em resumo, você pode instanciar um novo objeto sem especificar um tipo:

Nos bastidores, há de fato é um tipo que herda da base Objeto mas, de modo geral, lidamos apenas com o objeto, não com seu tipo.

Além disso, não posso retornar um tipo anônimo de um método ou passar um tipo anônimo como parâmetro sem perder as informações de tipo no processo.

Eles são úteis, sem dúvida, mas geralmente me refiro a eles como anônimos objetos como eu as uso, por esses motivos.

O que isso tem a ver com as tuplas C#?

Penso nas tuplas do C# como uma forma de fazer com que o C# retorne tipos anônimos, mas com informações mais ricas. Elas são uma forma de criar uma "classe" em tempo real sem realmente definir uma classe. A sintaxe das tuplas consiste simplesmente em colocar parênteses em torno de uma lista de tipos e nomes separados por vírgulas. Um literal de tupla é apenas uma lista de literais separados por vírgula, também cercada por parênteses. Por exemplo:

Observação: No momento, estou preferindo o PascalCase para propriedades de tuplas. Não sei se essa é a diretriz oficial ou não, mas me parece correta.

Tuplas C# em ação

Coloquei as tuplas para trabalhar em um aplicativo de console simples que interage com o Couchbase.

Eu criei um Ajudante de balde que é uma fachada muito simples sobre a classe normal do Couchbase IBucket. Essa classe tem dois métodos: um para obter um documento por chave e retornar uma tupla, e outro para inserir uma tupla como um documento.

Para instanciar esse auxiliar, você só precisa passar um IBucket no construtor.

Tuple como um tipo de retorno

Você pode então usar o GetTuple para obter um documento do Couchbase como uma tupla.

A tupla consistirá em uma cadeia de caracteres (a chave do documento) e um objeto de qualquer tipo que você especificar. O conteúdo do documento é JSON e será serializado em um objeto C# pelo SDK do .NET.

Além disso, observe que o nome das propriedades da tupla não precisa ser igual. Eu usei obj em Ajudante de balde mas eu usei filme quando liguei para GetTuple. Os tipos precisam corresponder, é claro.

Tuple como um tipo de parâmetro

Também posso fazer o caminho inverso e passar uma tupla como parâmetro para InsertTuple.

O Gerar filme aleatório retorna um Filme com alguns valores aleatórios (confira o Fonte do GitHub para obter detalhes). Uma tupla de (string, filme) é passado para InsertTuple. O SDK do Couchbase .NET faz isso e insere um documento com a chave/valor apropriado.

Ao executar o aplicativo do console, você deve obter um resultado parecido com este:

C# tuples sample console output

Observe que, no momento, o SDK do Couchbase .NET não tem nenhum suporte direto a tuplas e talvez nunca precise dele. Esse código serve apenas para ajudar a demonstrar as tuplas C#. Eu não recomendaria o uso do BucketHelper como está na produção.

TUH-ple ou TOO-ple?

Parece que me lembro de meu(s) professor(es) pronunciando-o como "TOO-ple", então é isso que eu uso. Assim como o debate hard-G / soft-G de "GIF", tenho certeza de que há pessoas que acham que esse debate é da maior importância e estão convencidas de que sua pronúncia é a única verdadeira. Mas, ambos são aceitáveis.

Se você tiver dúvidas sobre tuplas, terei prazer em ajudar. Você também pode entrar em contato comigo em Twitter @mgroves ou envie-me um e-mail matthew.groves@couchbase.com.

Se você tiver dúvidas sobre o SDK do Couchbase .NET que usei nesta postagem, pergunte na seção Fóruns do Couchbase .NET. Confira também o Portal do desenvolvedor do Couchbase para obter mais informações sobre o .NET SDK e o Couchbase em geral.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

Deixar uma resposta