En este artículo, exploraremos cómo trabajar con Enums en el lenguaje de programación de óxido.
Definición de un enum
Consideremos un ejemplo en el que podemos usar un tipo enum. Por ejemplo, si necesitamos almacenar instrucciones, podemos usar un enum. Por lo general, podemos expresar la dirección en cuatro valores posibles principales: noreste, sur y oeste.
Si consideramos la dirección, un vehículo puede moverse en una de todas las direcciones posibles, pero no más una vez al mismo tiempo.
Esto hace que un enum es muy apropiado para tal estructura.
Para declarar un enum en óxido, comenzamos con la palabra clave enum, seguido del identificador enum. A continuación se proporciona un ejemplo:
Dirección de enum
Norte,
Este,
Sur,
Oeste
El ejemplo anterior nos permite definir un tipo de dirección de tipo personalizado que podemos reutilizar en el programa.
También puede definir una enumación con una variante sin datos asociados, similar a una estructura similar a la unidad. Un enum también puede tener variantes con datos con nombre y datos sin nombre.
Un ejemplo es como se muestra:
persona enum
Vivo,
Macho (cuerda, f64),
Mujer nombre: cadena, edad: i32
Las enumeras son útiles al crear un tipo como se muestra en el ejemplo anterior. Si tuviéramos que usar la definición de estructura, tendríamos que crear múltiples estructuras. Los enums nos permiten almacenar todas las variantes bajo una sola entidad.
Valores de enum
Después de declarar un enum.
Por ejemplo:
fn main ()
Sea n = dirección :: norte;
Sea e = dirección :: este;
Sea s = dirección :: sur;
Sea w = dirección :: oeste;
Para acceder a la variante de una enumación, usamos el doble de colon para separar el espacio de nombre de la variante y su identificador.
Coincide con enums
Un uso importante de enums es la coincidencia de patrones. Si tiene múltiples coincidencias potenciales en su programa, la opción para un bloque if-else podría no crear un código legible. Para tal escenario, podemos usar enums con el operador de coincidencia.
El operador de coincidencia nos permite comparar un valor con una lista de patrones, como nombres variables, valores literal y variantes de enum.
Considere el siguiente ejemplo de las instrucciones que creamos anteriormente:
fn main ()
Sea dirección: dirección = dirección :: norte;
Dirección de coincidencias
Direction :: North =>
println!("La dirección es norte");
,
Dirección :: este =>
println!("La dirección es este");
,
Dirección :: sur =>
println!("La dirección es sur");
,
Direction :: West =>
println!("La dirección es oeste");
En el ejemplo anterior, comenzamos con la palabra clave de coincidencia seguida de la expresión que deseamos evaluar. Aunque la sintaxis puede parecer similar a una declaración IF, la expresión de coincidencia no devuelve un verdadero booleano verdadero o falso. El tipo de retorno puede ser de cualquier tipo. En nuestro caso, el tipo de retorno es una dirección en la dirección.
El siguiente bloque se conoce como un brazo de partido. Un brazo contiene el patrón para que coincida y el bloque de código para ejecutar si se encuentra la coincidencia.
En nuestro ejemplo, el primer brazo contiene el patrón de dirección :: North y el operador =>. Esto abre el bloque para que el código se ejecute cuando se encuentra la coincidencia. Para el ejemplo anterior, imprimimos el mensaje para la dirección coincidente.
El compilador evaluará la expresión de coincidencia y se comparará para un patrón de coincidencia en los brazos proporcionados. Si se encuentra una coincidencia dentro de un brazo específico, se ejecuta el código dentro del bloque del brazo. De lo contrario, el compilador continúa con la evaluación.
Podemos ejecutar el código anterior de la siguiente manera:
Rustc enums.RS
./enums
El código anterior debe devolver de la siguiente manera:
ps ./enums
La dirección es el norte
El marcador de posición
Supongamos que solo queremos realizar funciones específicas para patrones particulares en un enum. Entonces, haga una acción común para todos los demás.
Para tal caso, podemos usar el operador _, que coincide con todos los demás casos no especificados dentro de una expresión de coincidencia.
Tomemos las instrucciones enum que creamos anteriormente. Podemos definir una acción si la dirección es hacia el norte, y si no, realizamos un mensaje global para todos los demás casos. El código resultante es el que se muestra a continuación:
fn main ()
Sea dirección: dirección = dirección :: norte;
Dirección de coincidencias
Direction :: North =>
println!("La dirección es norte");
,
_ =>
println!("Otra dirección")
Si cambiamos el valor de "dirección", debemos obtener la siguiente salida como:
Sea dirección: dirección = dirección :: este;
$ Cargo Run
Otra dirección
El código dentro del bloque _ se ejecuta ya que definimos ningún caso coincidente para la dirección este.
Cero variante enums
También podemos crear un enum sin variantes. Estos se conocen como enums de variante cero, y no podemos instanciarlos.
A continuación se proporciona un ejemplo de enums de variante cero:
enum ceroenum
No podemos lanzar enums de variantes cero a otros tipos.
Conclusión
En este artículo, exploramos los conceptos básicos de trabajar con los tipos de enumeros en el lenguaje de programación de óxido. Destacamos cómo trabajar con enums en óxido, que incluye la definición de un enum. Esperamos que hayas encontrado este artículo útil. Consulte los otros artículos de Sugerencia de Linux para obtener más consejos e información.