轻松检查数字是否在Dart?中的给定范围内

vwoqyblh  于 2023-02-20  发布在  其他
关注(0)|答案(5)|浏览(153)

Dart中是否有一个运算符或函数可以轻松验证数字是否在某个范围内?类似于Kotlinin运算符:
https://kotlinlang.org/docs/reference/ranges.html

if (i in 1..10) { // equivalent of 1 <= i && i <= 10
    println(i)
}
klsxnrf1

klsxnrf11#

很简单,不需要。只需要使用1 <= i && i <= 10

8hhllhi2

8hhllhi22#

因为包含了扩展函数,所以如果您同意以非内联方式执行检查,这个答案可能会稍微改变。
据我所知,没有内置函数来实现这一点,但是您可以很容易地在num上创建自己的扩展来模拟这一点。
类似这样的操作将模拟范围验证:

void main() {
  final i = 2;
  if (i.isBetween(1, 10)) {
    print('Between');
  } else {
    print('Not between');
  }
}

extension Range on num {
  bool isBetween(num from, num to) {
    return from < this && this < to;
  }
}

这个方法特别排斥from和to,但是通过一些小的调整和更好的命名,您可以轻松地为所有Kotlin范围检查创建扩展函数。

bwleehnv

bwleehnv3#

我发现使用clamp更具可读性。所以,要检查i是否在1到10之间,请将其夹在范围内并与其本身进行比较。

if (i.clamp(1,10) == i) {
    print(i);
}

Documentation for clamp

bd1hkmkf

bd1hkmkf4#

使用range_type dart软件包。
例如

for (int i = 0; i < 15; i++) {
  if (i.contained(5.range(10))) {
    print(i);
  }
}
63lcw9qa

63lcw9qa5#

这将忽略输入序列

extension RangeNum on num {

  bool isBetween(num a, num b) {
   //not  ( both greater || both lesser )
    return !((a > this && b > this) || (a < this &&  b < this));
  }
}

使其成为专有的

bool isBetweenExclusive(num a, num b) {
    return !((a >= this && b >= this) || (a <= this &&  b <= this));
  }

相关问题