簡體   English   中英

Dart 中的 List take() 與 getRange() 有什么區別

[英]What's the difference between List take() vs. getRange() in Dart

我想要一些List的前n 個元素。 據我所知,我有兩個選擇: take(n)getRange(0, n)

  1. 它們之間有什么區別?
  2. 我什么時候會使用一個而不是另一個(假設我總是想要前n 個元素)?

最明顯的區別是take()只能在開頭使用元素,您可以將它與list.skip(3).take(5)類的skip()結合使用以獲得類似的行為。
list.take()是惰性求值的,它適用於函數式編程,如果元素稍后沒有真正迭代,它可能會更有效。
list.take()也可以容忍當列表中的元素沒有要求的那么list.take() take()返回盡可能多的可用, getRange()拋出。 take()可用於所有可迭代對象(也包括流), getRange()僅在默認情況下可用於列表。

take()getRange()之間存在差異

拿()

此方法返回從索引 0 開始直到從給定列表提供的計數的可迭代對象。

您可以使用take(count)獲取List的第一個計數項

var sportsList = ['cricket', 'tennis', 'football'];

print(sportsList.take(2));     // (cricket, tennis)

獲取范圍()

此方法以與給定列表中相同的順序返回指定范圍[start][end]中的元素。 請注意,開始元素是包含的,但結束元素是不包含的。

您可以通過使用getRange()方法在List指定范圍來獲取一組項目。

 var myList = [1, 2, 3, 4, 5];
 print(myList.getRange(1,4)); // (2, 3, 4)

 and also use
 var myList = [0, 'one', 'two', 'three', 'four', 'five'];
 myList.getRange(1, 3).toList();       // [one, two]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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