Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 28269|Respuesta: 1

[Fuente] El uso de tuplas en Java

[Copiar enlace]
Publicado en 31/8/2021 11:22:41 | | | |
Las tuplas tienen un significado especial en el campo de la informática, este nombre puede sonar un poco extraño, y básicamente no existen escenarios de aplicación en la escritura de código, sin embargo, sorprendentemente, las tuplas están estrechamente relacionadas con la programación; algunos estudiantes pueden no saber que otro nombre académico para "registros" en bases de datos relacionales es "tuplas", un registro es una tupla, una tabla es una relación, los registros están compuestos por tablas, las tuplas generan relaciones, este es el concepto central de las bases de datos relacionales.

Las tuplas son una parte inseparable de una base de datos relacional, pero no son tan indispensables en la programación. Algunos lenguajes de programación tienen su propia sintaxis de tuplas, como python, F#, haskell, scala, etc., mientras que otros son más populares pero no tienen sintaxis de tuplas, como Java, JavaScript, C++, C#, etc.

Las tuplas no son elementos indispensables de programación como arrays y objetos, pero su uso puede ser muy cómodo para escribir código, especialmente cuando una función necesita devolver múltiples valores. En este caso, la práctica común es definir un objeto, establecer el valor que la función debe devolver como atributo del objeto y luego establecer el tipo de valor de retorno de la función al tipo del objeto. O puedes hacer que esta función devuelva una estructura de datos de mapa en la que existan los datos específicos. Sin embargo, ambos enfoques tienen sus fallos, y el primero es fiable, pero el código es inusualmente sobrecargado. Los requisitos en sí son muy simples, siempre que la función devuelva varios valores, pero este método requiere definir un tipo de antemano, instanciarlo, después establecer las propiedades de la instancia y finalmente devolver, lo cual es demasiado ineficiente. Aunque el segundo método es rápido, pero no lo suficientemente seguro, dentro de la función puede saber qué tipo de valor se almacena en el mapa, pero fuera de la función, solo saber que el valor de retorno de esta función es un mapa, es decir, qué valores se almacenan en el mapa y qué tipo no se conoce, en proyectos de desarrollo multipersona. Esta desventaja es especialmente evidente; lamentablemente, esta práctica es la solución preferida en algunos lenguajes tipados dinámicamente, lo que también es una de las razones fundamentales por las que se critica la baja seguridad y legibilidad de los lenguajes tipados dinámicamente. Por lo tanto, la mejor solución a este tipo de problema es usar tuplas.

En lenguajes donde la sintaxis en sí misma soporta tuplas, las tuplas se representan entre paréntesis, como (int, bool, string) es un tipo triple, y su valor puede ser (1, true, "abc"). Cabe señalar que cada tipo de tupla es único, (int, bool), (bool, int), (cadena, doble) son todos binarios, pero son tuplas diferentes, si tomas una tupla concreta aquí como valor de retorno de la función, aunque no es tan buena como la primera solución usando tipos personalizados mencionados antes en cuanto a legibilidad y seguridad, es mucho mejor que la segunda solución usando map, al menos usando tuplas puedes saber cuántos valores devolverá la función, ¿Qué tipo de valor son estos valores? Y tiene la ventaja de que es sencillo y rápido programar un segundo esquema usando map.

Afortunadamente, estos lenguajes de programación ahora soportan genéricos, y la implementación de tuplas no integradas se ha vuelto extremadamente sencilla, pero, al fin y al cabo, es un elemento sintáctico incorporado que no es del lenguaje, y desde luego no es tan cómodo de usar como las tuplas nativas.

Lo siguiente presenta una biblioteca de tuplas Java de terceros, llamada Javatuples, con su propia página oficial y cientos de estrellas en github, que casi ocupa una posición de monopolio en el campo de las tuplas de Java.

Las javatuplas definen una tupla con una longitud máxima de 10, pero creo que el número de elementos en una tupla de 10 ya es demasiado, y básicamente no hay legibilidad. Las clases de tuplas se definen de la siguiente manera:

Unidad<A> (1 elemento)

Par<A,B> (2 elementos)

Triplete<A, B, C> (3 elementos)

Cuarteto<A,B,C,D> (4 elementos)

Quinteto<A,B,C,D,E> (5 elementos)

Sexteto<A,B,C,D,E,F> (6 elementos)

Septeto<A,B,C,D,E,F,G> (7 elementos)

Octeto<A,B,C,D,E,F,G,H> (8 elementos)

Enéada<A,B,C,D,E,F,G,H,I> (9 elementos)

Década<A,B,C,D,E,F,G,H,I,J> (10 elementos)

Estas clases arquetípicas son clases genéricas, por lo que las letras entre corchetes angulares pueden ser reemplazadas por tipos arbitrarios. A continuación se muestra un ejemplo de código binario





Al extraer inferencias, el resto de los tipos de tuplas se utilizan de la misma manera.

Como las tuplas de Java no son soportadas por el propio lenguaje, el código parece javanés y menos elegante. Sin embargo, al escribir código, además de que la comodidad de escribir puede mejorar la eficiencia, es más importante prestar más atención al significado expresado por el propio código, que es usar el significado (función) de la tupla para mejorar el código, y cómo escribirlo es en realidad solo secundario.

Finalmente, debe señalarse que el tipo en los corchetes genéricos no puede ser el tipo básico de Java; si quieres usar el tipo básico, también debe ser el tipo básico que ha sido encapsulado, como el tipo int que debe convertirse a entero, y el tipo bool corresponde al tipo booleano.




Anterior:POI CellStyle establece el color de fondo de la celda
Próximo:Tutorial de .NET/C# MailKit para enviar correo [con código fuente]
 Propietario| Publicado en 15/9/2021 10:55:08 |
Necesitas usar Maven para introducir dependencias como esta:


Los javatuples nos permiten crear hasta diez valores de retorno


Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com