Dart 中的 List take() 与 getRange() 有什么区别

T.J*_*ika 17 collections list dart

我想要some的前n 个元素List。据我所知,我有两个选择:take(n)getRange(0, n)

  1. 它们之间有什么区别?
  2. 我什么时候会使用一个(假设我总是想要前n 个元素)?

Gün*_*uer 21

最明显的区别是take()只能在开头使用元素,但您可以将其与skip()like结合使用list.skip(3).take(5)以获得类似的行为。
list.take()是惰性求值的,它适用于函数式编程,如果元素稍后实际上没有迭代,它可能会更有效。
list.take()当列表中的元素没有所要求的那么多时,也可以容忍。take()返回尽可能多的可用,getRange()抛出。 take()可用于所有可迭代对象(也可用于流),getRange()默认情况下仅可用于列表。