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

Shu*_*oni 3 expression dart dart-pub

由于不同语言对表达式和语句的定义不同,那么它们在 Dart 中有什么区别呢?

Din*_*har 5

我仍然是 Dart 的新手,但具有以前的知识(和阅读 dart 语言之旅):

  • 表达式通常评估为某些东西,例如在使用条件表达式时,condition ? expr1 : expr2其值为expr1or expr2
  • 语句没有价值,或者通常不直接改变价值。

一个statement 包含 expressions,但一个expression 不能包含一个statement

以上是我对我试图为您简化的要点的解释,在阅读有关类别重要概念的语言之旅时发现,如下所示:

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


Sur*_*gch 5

简答

表达式是,语句做事

例子

如果你能看到例子,这更有意义。

表达式

表达式在运行时具有值。

  • 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();

注意:此处的大多数示例都是通过在文档中搜索关键字expressionstatement 获得的