Bool
bool
es el tipo primitivo de Move para valores booleanos true
y false
.
Literales
Sección titulada «Literales»Los literales para bool
son true
o false
.
Operaciones
Sección titulada «Operaciones»Lógicas
Sección titulada «Lógicas»bool
soporta tres operaciones lógicas:
Sintaxis | Descripción | Expresión Equivalente |
---|---|---|
&& | y lógico con cortocircuito | p && q es equivalente a if (p) q else false |
|| | o lógico con cortocircuito | p || q es equivalente a if (p) true else q |
! | negación lógica | !p es equivalente a if (p) false else true |
Flujo de Control
Sección titulada «Flujo de Control»Los valores bool
se usan en varias construcciones de flujo de control de Move:
Propiedad
Sección titulada «Propiedad»Al igual que con los otros valores escalares integrados en el lenguaje, los valores booleanos son implícitamente copiables, lo que significa que se pueden copiar sin una instrucción explícita como copy
.
Ejemplos
Sección titulada «Ejemplos»Operaciones Básicas
Sección titulada «Operaciones Básicas»fun boolean_examples() { let x: bool = true; let y: bool = false;
// Operaciones lógicas let and_result = x && y; // false let or_result = x || y; // true let not_result = !x; // false}
En Condicionales
Sección titulada «En Condicionales»fun conditional_example(condition: bool) { if (condition) { // hacer algo si es verdadero } else { // hacer algo si es falso }}
Con Assert
Sección titulada «Con Assert»fun assert_example(value: u64) { assert!(value > 0, 1); // Aborta con código 1 si value no es mayor que 0}
Cortocircuito
Sección titulada «Cortocircuito»fun short_circuit_examples(x: u64) { // El cortocircuito previene la evaluación de la segunda expresión si la primera es suficiente let result1 = (x > 0) && (100 / x > 5); // Seguro: no divide por cero si x es 0 let result2 = (x == 0) || (100 / x > 5); // Seguro: no divide por cero si x es 0}
Características Importantes
Sección titulada «Características Importantes»-
Cortocircuito: Los operadores
&&
y||
usan evaluación de cortocircuito, lo que significa que el segundo operando solo se evalúa si es necesario. -
Sin conversión automática: Move no convierte automáticamente otros tipos a
bool
. Debes usar comparaciones explícitas:
// ✗ Incorrectoif (x) { ... } // Error: x debe ser bool
// ✓ Correctoif (x != 0) { ... } // Compara explícitamente x con 0
-
Copiable implícitamente: Los valores
bool
se pueden copiar libremente sin usar la palabra clavecopy
. -
Inmutable: Los valores
bool
son inmutables una vez creados, pero las variables que los contienen pueden ser reasignadas.