为什么不能这样做,如果你试图找出一个int是否在两个数字之间:
if (16.5 < value < 17.5)
代替它,你必须做
if (value > 16.5 && value < 17.5)
看起来有点开销
简短回答
你可以创建自己的方法,比如
between(value, 1, 10);
长回答
你必须考虑编译器是如何工作的
。它们有某种解析器来读取程序语言。
如果你写'if'条件。解析器读取'i'和'f'字符。然后期待'('符号。
if ( a > b )
检查值,检查符号,再次检查值,检查')'符号。
程序就知道这是一个条件语句。然后编写像01010101(idk)这样的机器码。但是我们不能读一些东西)。
在这个公式中。最后逐个比较值(编译器将以尽可能小的单位工作)。
在这个阶段,效率是非常重要的。返回你的代码。if (16.5 < value < 17.5)
这个呢?
if (16.5 < value > 17.5)
和?
if (16.5 > value < 17.5)
有很多例外。但是dart可能会做出这种语法。但他们不会。
因为他们也要做一个一个比较的工作。
所以你可以创建自己的方法。
尝试以下代码:
if (value.clamp(16.6, 17.4) == value) {
// Do what you want to do
}
我认为.clamp
函数是检查一个数是否小于下界(16.6)或大于上界(17.4)或介于下界和上界之间。如果数字小于下限或大于上限,则显示下限或上限,否则显示数字(我通过在DartPad中测试知道)