簡體   English   中英

List.single屬性的主要用途是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM