[英]What is the main purpose of List.single property?
幾天前,我注意到Dart的List類具有single
屬性。 然后,我閱讀了官方API文檔,並了解了此屬性的工作原理。 這意味着我知道List.single
工作原理如下:
print(['a'].single); // outputs 'a'
print(['a', 'b'].single) // throws StateError
但我找不到single
財產的任何實際用例。 當然,上面顯示的幼稚代碼在實際編程中毫無意義。
該物業的目的是什么? 如果List包含兩個或更多元素,為什么此屬性會拋出異常? 為什么它不是一個布爾屬性,它代表List是否只有單個元素? Dart語言開發人員如何認為將List.single
包含在核心API中是有用的?
如果您對此有任何了解,如果您幫助我,我將非常感激。
如果您希望Iterable
只包含一個元素,則可以使用single
。 這是一個真實世界的例子:我們有數據庫連接,它具有執行SQL查詢的query
方法。 該方法返回受查詢影響的行。 現在考慮一個查詢,您只希望影響一行:
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');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.