Dart: создать список от 0 до N
Как легко создать целый ряд целых чисел в дротике? Например:
// throws a syntax error :)
var list = [1..10];
Ответы
Ответ 1
Вы можете использовать конструктор List.generate:
var list = new List<int>.generate(10, (i) => i + 1);
Вы можете альтернативно использовать генератор:
/// the list of positive integers starting from 0
Iterable<int> get positiveIntegers sync* {
int i = 0;
while (true) yield i++;
}
void main() {
var list = positiveIntegers
.skip(1) // don't use 0
.take(10) // take 10 numbers
.toList(); // create a list
print(list); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
Ответ 2
Насколько я знаю, в Dart нет родного аналогичного способа сделать это. Однако вы можете создать свой собственный класс Range
или использовать https://pub.dartlang.org/packages/range, если вы не против зависимости.
Олов Лассус недавно написал статью о реализации собственного класса Range
редактировать: еще лучший способ, о котором я только что подумал:
Iterable<int> range(int low, int high) sync* {
for (int i = low; i < high; ++i) {
yield i;
}
}
void main() {
for(final i in range(1, 20)) {
print(i);
}
}
Ответ 3
Вы также можете использовать функцию Dart Iterable.generate для создания диапазона между 0..n-1
var list = Iterable<int>.generate(10).toList()
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Ответ 4
с дротиком 2.3.0:
var list = [for(var i=0; i<10; i+=1) i];