我只想知道Dart中assert的用途。我试图自己解决这个问题,但我无法做到。如果有人向我解释有关assert的问题,那就太好了。
答案 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 中的关键字,用于调试目的,在软件生产模式下编译器会忽略。