飞镖范围运算符

问题描述 投票:0回答:6

我一直在研究 Dart,我想知道它是否有像 Kotlin 那样的范围运算符 https://kotlinlang.org/docs/reference/ranges.html 或类似的东西。

flutter dart
6个回答
20
投票

您可以使用List.generate,如下所示:

var list = List.generate(4, (i) => i);
print(list); // prints [0, 1, 2, 3]

或者

List _range(int from, int to) => List.generate(to - from + 1, (i) => i + from);
print(_range(3, 6)); // prints [3, 4, 5, 6]

4
投票

目前 Dart 中没有这样的运算符。


4
投票

在相当长的一段时间内(自 2014 年 9 月以来),

Iterable.generate(n)
已经可用,它可以迭代从
0
n-1
的整数。目前,这似乎是您可以使用类似
range()
的功能。

请参阅本期7775

中的讨论

使用示例:

Iterable.generate(5).forEach((i) => print(i));

0
投票

目前 Dart 中没有这样的运算符。

但是尝试这些代码

1.

List<int> range(int from, int from)=>List.generate(10,(i)=>i);
Iterable<int> range(int from,int to,[int stepSize=1]) sync*{
 for(int i = from;i<to;i+=stepSize){
   yield i;
  }
}
  Iterable<int> to(int end, [int stepSize = 1]) sync* {
    if (this <= end) {
      for (var i = this; i < end; i += stepSize) yield i;
    } else {
      for (var i = this; i > end; i -= stepSize) yield i;
    }
  }
}

0
投票
for (int index in Iterable.generate(4)) {
  // Loop body
}

-1
投票

您可以使用 range_type dart 包来使用范围。

import 'package:range_type/predefined_ranges.dart';

void main() {
  final july = DateTimeRange.parse('[2022-07-01, 2022-08-01)');

  final scheduleDate1 = DateTime(2022, 07, 02);
  final scheduleDate2 = DateTime(2022, 08, 07);

  final workingDays = DateTimeRange.parse('[2022-07-20, 2022-08-15)');

  print('Is scheduleDate1 in July? ${july.containsElement(scheduleDate1)}');
  print('Is scheduleDate2 in July? ${july.containsElement(scheduleDate2)}');
  print('Is workingDays overlaps? ${july.overlap(workingDays)}');
  print('workingDays intersection: ${july.intersection(workingDays)}');
  print('workingDays union: ${july.union(workingDays)}');
  print('july difference workingDays: ${july.difference(workingDays)}');
}
© www.soinside.com 2019 - 2024. All rights reserved.