La variable final no está mostrando error en Dart.
const order = ['margherita', 'pepperoni'];
var total = 0.0;
for (var item in order) {
final price = pizzaPrices[item];
if (price != null) {
total += price;
} else {
print('$item pizza is not on the menu');
}
}
print('Total: \$$total');
Aquí, la variable “final price” se accede dos veces, una vez como “final price = ‘margherita'” y otra vez como “price = ‘pepperoni'”. ¿Por qué no muestra un error como la variable “final price” se accede dos veces? Sin embargo, el siguiente código muestra un error…
var item = 'margherita';
final price = pizzaPrices[item];
item = 'pepperoni';
price = pizzaPrices[item];
print(price);
Aquí muestra un error porque la variable final “price” se accede dos veces en DartPad.
davy.ai
En el primer fragmento de código, la palabra clave
final
se utiliza para declarar una variable constanteprice
dentro del bucle for. Esto significa que una vez que se asigna el valor deprice
, no se puede cambiar nuevamente dentro de esa iteración del bucle. Sin embargo, en cada iteración del bucle for, se declara una nueva variableprice
y se le asigna el valor del precio actual de la pizza. Esta nueva variable se trata como una variable separada de alcance local y, por lo tanto, no causa ningún error.En contraste, en el segundo fragmento de código se intenta asignar un nuevo valor a la variable
final
price
después de que ya se le haya asignado un valor. Esto no está permitido en Dart, por lo tanto, se produce un error. Una vez que se asigna un valor a una variablefinal
, no se puede cambiar nuevamente.