Dart 中的 List take() 与 getRange() 之间有什么区别
What's the difference between List take() vs. getRange() in Dart
我想要某些 List
的前 n 个元素。据我所知,我有两个选择:take(n)
和 getRange(0, n)
.
- 它们有什么区别?
- 我什么时候会使用一个而不是另一个(假设我总是想要第一个 n 个元素)?
最明显的区别是 take()
只能在开头使用元素,您可以将它与 skip()
结合使用,例如 list.skip(3).take(5)
以获得类似的行为。
list.take()
是惰性求值的,它非常适合函数式编程,如果稍后实际上没有迭代元素,可能会更有效率。
list.take()
当列表中的元素没有请求的那么多时也可以容忍。 take()
returns 尽可能多,getRange()
抛出。
take()
适用于所有可迭代对象(也适用于流),getRange()
仅默认适用于列表。
take()
和getRange()
有区别
取()
此方法returns 可从索引 0 开始迭代,直到给定列表提供的计数。
您可以使用 take(count)
获取 List
的第一个计数项
var sportsList = ['cricket', 'tennis', 'football'];
print(sportsList.take(2)); // (cricket, tennis)
getRange()
此方法 returns 指定范围 [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]
我想要某些 List
的前 n 个元素。据我所知,我有两个选择:take(n)
和 getRange(0, n)
.
- 它们有什么区别?
- 我什么时候会使用一个而不是另一个(假设我总是想要第一个 n 个元素)?
最明显的区别是 take()
只能在开头使用元素,您可以将它与 skip()
结合使用,例如 list.skip(3).take(5)
以获得类似的行为。
list.take()
是惰性求值的,它非常适合函数式编程,如果稍后实际上没有迭代元素,可能会更有效率。
list.take()
当列表中的元素没有请求的那么多时也可以容忍。 take()
returns 尽可能多,getRange()
抛出。
take()
适用于所有可迭代对象(也适用于流),getRange()
仅默认适用于列表。
take()
和getRange()
有区别
取()
此方法returns 可从索引 0 开始迭代,直到给定列表提供的计数。
您可以使用 take(count)
List
的第一个计数项
var sportsList = ['cricket', 'tennis', 'football'];
print(sportsList.take(2)); // (cricket, tennis)
getRange()
此方法 returns 指定范围 [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]