Si está interesado en explorar más temas de óxido, consulte nuestra lista de óxido para obtener más información.
El parámetro
Al declarar tipos genéricos, encontrará el parámetro. Se usa para representar cualquier tipo de datos en óxido:
Un ejemplo del parámetro de tipo en una función es un mostrado:
fn my_functionLo anterior define una función genérica que toma un argumento t de cualquier tipo.
Puede definir múltiples parámetros genéricos separándolos con comas:
fn my_functionEn la sintaxis anterior, definimos múltiples parámetros genéricos, T, U, V. Aunque no es necesario, es común encontrar tipos genéricos que comienzan desde T e incrementando el alfabeto.
Óxido define la estructura genérica
Podemos definir una estructura genérica como se muestra en la sintaxis a continuación:
struct structNameTome el ejemplo, estructura definida a continuación:
estructurar mystructLo anterior crea una estructura genérica con dos parámetros. Dentro de la estructura, especificamos dos miembros de la estructura de Tipo T y U. Dado que t y u son tipos genéricos, pueden ser de cualquier tipo.
Funciones genéricas
La misma construcción se puede aplicar a las funciones y el método. Si una función toma tipo, se dice que es una función genérica.
La definición de función genérica es como se muestra:
fn func_nameTome el ejemplo de la definición de función genérica a continuación:
FN genéricoEn este ejemplo, tenemos una función genérica que toma cualquier tipo e imprime en la consola. Sin embargo, ejecutar el código anterior causará un error.
Dado que estamos utilizando un parámetro genérico, necesitamos implementar el rasgo de pantalla o depuración para imprimirlo. Podemos refinar el código como:
usar std :: fmt :: debug;En este caso, importamos el rasgo de depuración y lo usamos para el tipo genérico. Luego podemos imprimir el valor usando el marcador de posición del rasgo de depuración: :?
El mismo caso se aplica si una función necesita realizar cualquier tipo de operación. Tome la función de ejemplo a continuación que devuelve 0 si un valor es uniforme y 1 si es lo contrario.
fn incluso_oddSi llamamos a la función anterior, devolverá un error. Necesitamos implementar el rasgo REM para que funcione como:
usar std :: ops :: rem;Los rasgos REM y EQ le permiten usar el operador restante y realizar una comparación lógica.
Conclusión
En este artículo, exploramos los fundamentos de trabajar con tipos genéricos en el lenguaje de óxido. Consulte los documentos para obtener más información.