Flutter 有没有办法在Dart的循环中使用三元表达式和continue语句
我试图在Dart中的do while循环中使用三元表达式以及continue或break构造,但出现编译错误Flutter 有没有办法在Dart的循环中使用三元表达式和continue语句,flutter,dart,Flutter,Dart,我试图在Dart中的do while循环中使用三元表达式以及continue或break构造,但出现编译错误 do { expr ? print('Conditionally print something') : continue; }while(expr == true); 上面的代码在编译时失败,但是如果我使用一对if-else决策结构,代码可以工作。因此,社区面临的问题是,为什么三元表达式不能与continue或break构造一起工作?三元运算符以(expr1)的形式接受3个表达
do
{
expr ? print('Conditionally print something') : continue;
}while(expr == true);
上面的代码在编译时失败,但是如果我使用一对if-else决策结构,代码可以工作。因此,社区面临的问题是,为什么三元表达式不能与continue或break构造一起工作?三元运算符以
(expr1)的形式接受3个表达式?(expr2):(expr3)。
您不能在三元运算符中执行语句,也不能仅在dart中执行语句,也不能在其他语言中执行语句。因为break和continue不是表达式而是语句,所以不能在这里使用它们三元运算符以
(expr1)的形式使用3个表达式?(expr2):(expr3)。
您不能在三元运算符中执行语句,也不能仅在dart中执行语句,也不能在其他语言中执行语句。因为break和continue不是表达式,而是语句,所以不能在这里使用它们,因为
三元运算符
正在返回一个值。使用以下语法:
condition ? expresion1 : expression2
这意味着:
如果条件为true,则返回表达式1。如果不是,则返回表达式2
所以,您不能使用这样的语句:
print('Conditionally print something')
或
因为一个
三元运算符正在返回一个值。使用以下语法:
condition ? expresion1 : expression2
这意味着:
如果条件为true,则返回表达式1。如果不是,则返回表达式2
所以,您不能使用这样的语句:
print('Conditionally print something')
或
- 不,你不能这么做
- continue是一个Dart语句(如下所示),print是一个函数
首先
- 在Dart语言规范中,第17.23节解释了它的工作原理。
- 搜索原始文档,因为复制/粘贴似乎不正常
17.23有条件的
条件表达式根据布尔值计算两个表达式中的一个
条件
{conditionalExpression}::={ifNullExpression}
('?'{expressionWithoutCascade}':'{expressionWithoutCascade})?
形式为e1?e2:e3的条件表达式c的求值过程如下
如下:
首先,将e1求值为对象o1。如果o1的运行时类型不是bool,则为动态错误。如果r为真,那么c的值是
评估e2的表达。否则,c的值是评估的结果
表达式e3
秒
正如您所见,三元运算符需要表达式,但请继续,在相同的PDF中,语言规范定义为语句、保留字,如下所示:
18条语句
语句是可以在运行时执行的Dart代码片段。
语句与表达式不同,它的计算结果不是对象,而是对象
执行它们对程序状态和控制流的影响
第三
在打印的情况下,我想它是一个函数,没有找到规范。也许它返回无效。
我们仍然可以问自己,为什么不能将continue放在函数中,即使是在类似()的lambda中(=>{continue;}或类似的函数中。简短的回答是,正如continue语句的规范中所说的,如果不是在一段时间内,等会给出一个编译错误。如果它在一个函数中,它会阻止该函数到达return语句,三元函数也会期望返回值
我们还可以做更多的研究,很多东西都在规范之内
- 当发生类似情况时,您也可以在不指定语言的情况下进行搜索,以获取有关JAVA或C#的信息,这可能会对您有所帮助
- 似乎Swift语言将允许在三元结构中继续和中断,根据本文-
- 不,你不能这么做
- continue是一个Dart语句(如下所示),print是一个函数
首先
- 在Dart语言规范中,第17.23节解释了它的工作原理。
- 搜索原始文档,因为复制/粘贴似乎不正常
17.23有条件的
条件表达式根据布尔值计算两个表达式中的一个
条件
{conditionalExpression}::={ifNullExpression}
('?'{expressionWithoutCascade}':'{expressionWithoutCascade})?
形式为e1?e2:e3的条件表达式c的求值过程如下
如下:
首先,将e1求值为对象o1。如果o1的运行时类型不是bool,则为动态错误。如果r为真,那么c的值是
评估e2的表达。否则,c的值是评估的结果
表达式e3
秒
正如您所见,三元运算符需要表达式,但请继续,在相同的PDF中,语言规范定义为语句、保留字,如下所示:
18条语句
语句是可以在运行时执行的Dart代码片段。
语句与表达式不同,它的计算结果不是对象,而是对象
执行它们对程序状态和控制流的影响
第三
在打印的情况下,我想它是一个函数,没有找到规范。也许它返回无效。
我们仍然可以问自己,为什么不能将continue放在函数中,即使是在类似()的lambda中(=>{continue;}或类似的函数中。简短的回答是,正如continue语句的规范中所说的,如果不是在一段时间内,等会给出一个编译错误。如果它在一个函数中,它将阻止该函数