Dart中的表达式和语句之间的区别?

时间:2018-12-09 09:29:34

标签: dart expression dart-pub

由于不同的语言对待表达式和语句之间的区别是什么?任何人都可以清楚地看到,dart中的表达式和语句之间的区别是什么?

3 个答案:

答案 0 :(得分:4)

我仍然是Dart的新手,但具有一定的知识(并阅读过Dart语言教程):

  • 表达式通常对某些值求值,例如,在使用条件表达式时,condition ? expr1 : expr2的值为expr1expr2
  • 声明没有价值,或者通常不做任何直接改变价值的事情。

statement 包含 expressions,但是expression 不能包含 statement

以上是我为您简化的要点解释,当您阅读language tour on category important concepts时发现是这样的:

  

Dart同时具有表达式(具有运行时值)和语句(没有)。例如,条件表达式 condition ? expr1 : expr2的值为expr1expr2。将其与没有任何价值的 if-else语句进行比较。一条语句通常包含一个或多个表达式,但是一个表达式不能直接包含一条语句。

答案 1 :(得分:2)

简短回答

表达式是,语句是做事

示例

如果您可以看到示例,则更有意义。

表达式

表达式在运行时具有值。

  • 42
  • true
  • hello
  • 1 + 1
  • x
  • myObject
  • myInt + 1
  • k++
  • p > 0
  • condition ? expr1 : expr2
  • 'hello'.toUpperCase()
  • myObject.toString()
  • myObject.someMethod()
  • myObject?.someProperty?.someMethod()
  • myString.isEmpty
  • [1, 2, 3]
  • [...list1]
  • <String, String>{...a, ...b}

声明

一条语句可以执行某些操作,而它本身在运行时没有任何值。语句不是表达式,但是它们可以包含表达式。

  • myInt = 1;
  • print('hello');
  • return null;
  • if (name != null) { return name; } else { return 'Guest'; }
  • for (var i = 0; i < 5; i++) { message.write('!'); }
  • break;
  • while (!isDone()) { doSomething(); }
  • yield k++;
  • assert(text != null);
  • throw FormatException('Expected at least 1 section');
  • void distanceTo(Point other) => throw UnimplementedError();

注意:这里的大多数示例都是通过在documentation中搜索关键字表达式声明来实现的。

答案 2 :(得分:1)

来自维基百科:

  

在数学中,表达式或数学表达式是符号的有限组合,可以根据依赖于上下文的规则很好地形成符号。数学符号可以指定数字(常数),变量,运算,函数,括号,标点符号和分组,以帮助确定运算顺序以及逻辑语法的其他方面。

在Dart中也是一样。

在这种情况下,可以将陈述描述为正确表达具体陈述所需的表达式和可能的其他符号的组合。

在Dart中,该语句可以为空,这意味着该语句不包含任何表达式。空语句可以用格式正确的符号表示或由上下文确定。

if-else语句的示例(使用伪代码)。

if (expression) { statement(s) } else { statement(s) }