我想要一些 List
的前
n元素。据我所知,我有两个选择:
take(n)
和getRange(0, n)
。
最明显的区别是
take()
只能在开头使用元素,但您可以将其与 skip()
结合使用,如 list.skip(3).take(5)
以获得类似的行为。list.take()
是惰性评估的,它适用于函数式编程,并且如果稍后不实际迭代元素,则可能会更有效。list.take()
也可以容忍。 take()
返回尽可能多的可用值,getRange()
抛出。
take()
适用于所有可迭代对象(也包括流),getRange()
默认情况下仅在列表上可用。
好问题! Dart 中的
take(n)
和 getRange(0, n)
都可以用来获取列表的第一个 n
元素,但是它们在行为和用法上有一些差异:
take(n)
take(n)
方法返回一个 Iterable
,其中包含列表的前 n
元素。n
元素而不需要新列表时,非常理想。void main() {
List<int> numbers = [1, 2, 3, 4, 5];
Iterable<int> firstThree = numbers.take(3);
print(firstThree); // Output: (1, 2, 3)
}
getRange(start, end)
getRange(start, end)
方法还返回 Iterable
,但它允许您指定从 start
到 end
(不包括)的元素范围。n
时很有用。void main() {
List<int> numbers = [1, 2, 3, 4, 5];
Iterable<int> firstThree = numbers.getRange(0, 3);
print(firstThree); // Output: (1, 2, 3)
}
take(n)
:当您特别需要第一个 n
元素并且更喜欢惰性求值时。getRange(0, n)
:当您需要特定范围的元素并且不介意急于评估时。就您而言,由于您总是想要第一个
n
元素,因此两种方法都可以使用。但是,如果您更喜欢惰性评估,take(n)
可能是更好的选择。