gpt4 book ai didi

dart - List.single 属性的主要用途是什么?

转载 作者:行者123 更新时间:2023-12-04 15:10:57 24 4
gpt4 key购买 nike

几天前,我注意到 Dart 的 List 类有 single属性(property)。然后,我阅读了官方 API 文档,并了解了该属性的工作原理。这意味着我知道 List.single工作原理如下:

print(['a'].single);     // outputs 'a'
print(['a', 'b'].single) // throws StateError

但是我找不到 single 的任何实际用例属性(property)。当然,上面显示的幼稚代码在实际编程中毫无意义。

属性(property)的目的是什么?如果 List 包含两个或更多元素,为什么此属性会抛出异常?为什么它不是代表 List 是否只有单个元素的 bool 属性? Dart 语言开发人员如何认为包含 List.single 有用在核心 API 中?

如果你有这方面的知识,如果你能帮我一把,我将不胜感激。

最佳答案

您可以使用 single 如果您希望收到 Iterable只包含一个元素。这是一个真实世界的例子:
我们的数据库连接有 query执行 SQL 查询的方法。该方法返回受查询影响的行。现在考虑一个查询,您只希望只有一行受到影响:

var row = databaseConnection.query('SELECT * FROM xyz WHERE id=5').single;

如果没有或超过一条线路受到影响,这提供了一种简短的失败方式。当然,也可以这样写:

var rows = databaseConnection.query('SELECT * FROM xyz WHERE id=5');

if (rows.length != 1) {
throw new StateError('Something is wrong');
}

var row = rows.first;

但这要长得多。或者,您可能想要 assert .

List工具 Iterable ,它还包含 single . single 如果您期望只有一个元素,getter 对流也很有用。考虑与 Stream 相同的示例行数:

databaseConnection.query('SELECT * FROM xyz WHERE id=5').single.then((row) {
print('Process the row');
});

关于dart - List.single 属性的主要用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27795991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com