问题描述
void main() {
const pizzaPrices = {
'Margherita' : 5.5,'Pepperoni' : 7.5,'vegetarian' : 6.5,};
var sum = 0.0;
const order = ['Margherita','Pepperoni'];
for (var item in order){
final price = pizzaPrices[item];
...
}
}
final price = pizzaPrices[item];
其余的代码应该打印订单的总价,我不明白为什么 final
在这种情况下有效? final 的重点不就是不允许变量改变吗?
解决方法
您正在为每次循环迭代创建一个新的 final price
。您将只能在当前循环迭代中使用 price
,并且将在下一次迭代中创建新的 final price
。
final
变量在声明时可以赋值,但不能重新赋值。您将无法在同一次循环迭代中再次为 price
赋值。
据我所知,const
被分配了一个硬编码值并且永远不能改变。 final
可以在运行时分配一次并且永远不能更改。