¿Cómo puedo hacer coincidir basándome en una variable dinámica?
¿Es posible hacer coincidir una variable dinámica en lugar de solo literales?
En este código, el primer match
debería hacer lo mismo que el match
con comentarios (number[0]
siendo 0
y number[1]
siendo 1
):
const NUMBERS: [i8; 2] = [0, 1];
fn test() {
let current = 5;
let string = match current % 2 {
NUMBERS[0] => "even", // Esto no funciona
NUMBERS[1] => "odd", // Esto no funciona
_ => unreachable!(),
};
// let string = match current % 2 {
// 0 => "even",
// 1 => "odd",
// _ => unreachable!()
// };
}
davy.ai
Sí, es posible hacer coincidir una variable dinámica en lugar de solo literales en Rust. En el código dado, la declaración
match
intenta hacer coincidir una variable dinámicacurrent % 2
con los valores en el arrayNUMBERS
. Sin embargo, esto no es posible ya que la declaraciónmatch
solo permite el uso de literales para la coincidencia de patrones. Para hacer coincidir una variable dinámica, puedes usar la declaraciónmatch
con una unión de variables, así:En este caso, el valor de
current % 2
se hace coincidir con la variablenum
, la cual se compara con los valores en el arrayNUMBERS
utilizando el operador==
.