飞镖有什么主张?

时间:2019-06-11 06:27:05

标签: flutter dart

我只想知道Dart中assert的用途。我试图自己解决这个问题,但我无法做到。如果有人向我解释有关assert的问题,那就太好了。

4 个答案:

答案 0 :(得分:1)

@jamesdlin说的足够了。另外,如果您需要真实的例子,请考虑以下问题:

import 'package:meta/meta.dart';

class Product {
  final int id;
  final String name;
  final int price;
  final String size;
  final String image;
  final int weight;

  const Product({
    @required this.id,
    @required this.name,
    @required this.price,
    this.size,
    this.image,
    this.weight,
  }) : assert(id != null && name != null && price != null);
}

我们有产品,并且必须有价格,标识和名称。但是我们可以处理其他字段,例如blankImage图标的图像等。尺寸和重量也不是必需的。

因此,最后,我们必须确保必填字段不得为null,因为它们是必填字段。如果这样做,您将在生产期间处理null值(在任何情况下都可以使用它,在我的示例中我处理null值),而不是在已发布的应用程序上出错。

答案 1 :(得分:0)

来自here

在开发过程中,使用断言语句— assert(condition,optionalMessage); —如果布尔条件为假,则中断正常执行。

假设您要打开一个必须以"https"开头的URL。您将如何确认?这是一个例子。

示例:

void openUrl({String url}) {
  assert(url.startsWith('https'), 'The url should start with https');
  
  // We can proceed as we 'https' in the url.
}

答案 2 :(得分:0)

assert 类似于 Error,因为它用于报告不应该发生的错误状态。不同之处在于 asserts 仅在调试模式下检查。它们在生产模式下完全被忽略。

例如:

OverlayEntry({
  @required this.builder,
  bool opaque = false,
  bool maintainState = false,
}) : assert(builder != null),
      assert(opaque != null),
      assert(maintainState != null),
      _opaque = opaque,
      _maintainState = maintainState;

答案 3 :(得分:-2)

Assert 是 dart 中的关键字,用于调试目的,在软件生产模式下编译器会忽略。