Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart空安全/断言运算符_Dart_Dart Null Safety - Fatal编程技术网

Dart空安全/断言运算符

Dart空安全/断言运算符,dart,dart-null-safety,Dart,Dart Null Safety,我不熟悉达特。我在计算一份比萨饼订单的价格。在我当前的解决方案中,我使用断言操作符。你觉得怎么样 我已经读过很多遍了,你不应该用它。你认为我的代码还可以,还是你会做一些更好/不同的事情 void main() { const List<String> order = ['margherita', 'pepperoni', 'pineapple']; calcTotalPrice(order: order); } calcTotalPrice({required List&l

我不熟悉达特。我在计算一份比萨饼订单的价格。在我当前的解决方案中,我使用断言操作符。你觉得怎么样

我已经读过很多遍了,你不应该用它。你认为我的代码还可以,还是你会做一些更好/不同的事情

void main() {
  const List<String> order = ['margherita', 'pepperoni', 'pineapple'];
  calcTotalPrice(order: order);
}

calcTotalPrice({required List<String> order}) {
  final Map<String, double> pizzaPrices = {
    'margherita': 5.5,
    'pepperoni': 7.5,
    'vegetarian': 6.5
  };

  double total = 0.0;

  for (var item in order) {
    pizzaPrices[item] ??= 0.0;
    total += pizzaPrices[item]!; // assertion operator (!)
  }

  print(total);
}
void main(){
常量列表顺序=[‘玛格丽塔’、‘意大利香肠’、‘菠萝’];
calcTotalPrice(订单:订单);
}
calcTotalPrice({必需的列表顺序}){
最终地图比萨饼价格={
“玛格丽塔”:5.5,
“意大利香肠”:7.5,
“素食者”:6.5
};
双倍合计=0.0;
对于(订单中的var项目){
比萨饼价格[项目]??=0.0;
总计+=比萨饼价格[项目]!;//断言运算符(!)
}
印刷品(总数);
}

您的代码很好,但您可以通过以下方法避免在地图
pizzaPrices
中收集未知密钥:

for (var item in order) {
  total += pizzaPrices[item] ?? 0.0;
}

在您知道值不是null的情况下,使用null断言操作符没有什么错。