Las tuplas C# son una nueva característica de C# 7. Voy a mostrar los conceptos básicos de cómo funcionan las tuplas C#. También voy a mezclar un poco de Couchbase para mostrar las tuplas en acción. Sin embargo, si no quieres instalar Couchbase sólo para jugar con tuplas, no te preocupes, podrás seguirlo.

Nota: Si hace tiempo que utiliza C#, es posible que recuerde la función Clase Tuple que se introdujo en .NET 4. Esa clase sigue existiendo, pero no es lo mismo que la nueva función de tupla de C#.

¿Qué son las tuplas C#?

Una "tupla" es un concepto matemático que no es más que una lista de elementos. En la familia de lenguajes LISP, la codificación se basa casi exclusivamente en la idea de que todo es una lista. Una vez más, C# toma prestada una idea del mundo de la programación funcional y la integra en un lenguaje no funcional. Así, obtenemos las tuplas C# (echa un vistazo a la etiqueta propuesta original de tupla C# de Mads Torgersen para más detalles y antecedentes).

¿Te acuerdas de los tipos anónimos?

Pero, para simplificarlo, consideremos algo con lo que quizá ya estés familiarizado en C#, un tipo anónimo. Para repasar, puedes instanciar un nuevo objeto sin especificar un tipo:

Entre bastidores, en realidad es un tipo que hereda de la base Objeto pero, en general, sólo nos ocupamos del objeto, no de su tipo.

Además, no puedo devolver un tipo anónimo de un método, o pasar un tipo anónimo como parámetro sin perder la información de tipo en el proceso.

Son útiles, sin duda, pero generalmente me refiero a ellas como anónimas objetos como yo las uso, por estas razones.

¿Qué tiene esto que ver con las tuplas C#?

Pienso en las tuplas C# como una forma de hacer que C# devuelva tipos anónimos, pero con información más rica. Son una forma de crear una "clase" sobre la marcha sin definir realmente una clase. La sintaxis de las tuplas consiste simplemente en poner entre paréntesis una lista de tipos y nombres separados por comas. Un literal de tupla no es más que una lista de literales separados por comas y también rodeados de paréntesis. Por ejemplo:

Nota: Ahora mismo prefiero PascalCase para las propiedades de las tuplas. No sé si es la pauta oficial o no, pero a mí me "parece" correcta.

Tuplas C# en acción

He puesto a trabajar tuples en una sencilla aplicación de consola que interactúa con Couchbase.

He creado un BucketHelper que es una fachada muy simple sobre la clase normal de Couchbase IBucket. Esta clase tiene dos métodos: uno para obtener un documento por clave y devolver una tupla, y otro para insertar una tupla como documento.

Para instanciar este helper, basta con pasarle un archivo IBucket en el constructor.

Tuple como tipo de retorno

A continuación, puede utilizar la función GetTuple para obtener un documento de Couchbase como una tupla.

La tupla constará de una cadena (la clave del documento) y un objeto del tipo que especifiques. El contenido del documento es JSON y será serializado a un objeto C# por el SDK .NET.

Además, fíjate en que el nombre de las propiedades de las tuplas no tiene por qué coincidir. Yo he utilizado obj en BucketHelper pero utilicé película cuando llamé GetTuple. Los tipos tienen que coincidir, por supuesto.

Tuple como tipo de parámetro

También puedo hacer lo contrario y pasar una tupla como parámetro a InsertTuple.

En GenerarPelículaAleatoria devuelve un Película con algunos valores aleatorios (echa un vistazo al objeto Fuente GitHub para más detalles). Una tupla de (cadena, Película) se pasa a InsertTuple. El SDK de Couchbase .NET lo toma de ahí e inserta un documento con la clave/valor apropiado.

Ejecutando la aplicación de consola, deberías obtener una salida parecida a esta:

C# tuples sample console output

Ten en cuenta que el SDK .NET de Couchbase en este momento no tiene soporte directo para tuplas, y puede que nunca lo necesite. Este código es simplemente para ayudar a demostrar tuplas C#. No recomiendo usar el BucketHelper tal cual en producción.

¿TUH-ple o TOO-ple?

Creo recordar que mis profesores lo pronunciaban como "TOO-ple", así que eso es lo que yo uso. Al igual que el debate sobre la "G" dura o la "G" suave, estoy seguro de que hay quienes piensan que este debate es de suma importancia y están convencidos de que su pronunciación es la única verdadera. Pero.., ambos son aceptables.

Si tienes preguntas sobre las tuplas, estaré encantado de ayudarte. También puedes ponerte en contacto conmigo en Twitter @mgroves o envíeme un correo electrónico matthew.groves@couchbase.com.

Si tienes alguna pregunta sobre el SDK .NET de Couchbase que he utilizado en este post, no dudes en preguntar en la sección Foros de Couchbase .NET. Consulte también el Portal para desarrolladores de Couchbase para obtener más información sobre el SDK .NET y Couchbase en general.

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

Dejar una respuesta