【问题标题】:Dart Null Safety / Assertion OperatorDart Null 安全/断言运算符
【发布时间】:2021-06-03 04:23:46
【问题描述】:

我是 Dart 新手。我正在计算披萨订单的价格。在我当前的解决方案中,我使用的是断言运算符。你怎么看?

我读过很多次你不应该使用它。你认为我的代码没问题,还是你会做一些更好/不同的事情?

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);
}

【问题讨论】:

  • 在你知道值不为空的情况下使用空断言运算符没有任何问题。

标签: dart dart-null-safety


【解决方案1】:

您的代码很好,但您可以避免在地图pizzaPrices 中收集未知键:

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

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    相关资源
    最近更新 更多