语法定义了一组用于编写程序的规则。 每种语言规范都定义了自己的语法。

Dart由以下语法组成:

  • 变量和运算符(Variables and Operators)
  • 类(Classes)
  • 函数(Functions)
  • 表达式和构造函数(Expressions and Programming Constructs)
  • Decision Making and Looping Constructs
  • 注释(Comments)
  • 库和包(Libraries and Packages)
  • 类型定义(Typedefs)
  • 集合、泛型表示的数据结构(Data structures represented as Collections / Generics)

第一个Dart程序

我们从第一个Hello World示例开始,看看Dart都干了些什么。

main() { 
   print("Hello World!"); 
}

main()函数是Dart中的预定义方法。 此方法充当应用程序的入口点。

Dart脚本需要main()方法来执行。

print()是一个预定义的函数,它将指定的字符串或值打印到标准输出,即终端。

上面的代码将会在终端输出:

Hello World!

运行Dart程序

你可以用两种方式执行Dart程序

  • 通过终端 类似CMD或者git bash
  • 通过WebStorm IDE

终端

通过终端执行Dart程序

  • 移动到当前项目的路径
  • 在“终端”窗口中键入以下命令
dart file_name.dart

通过WebStorm IDE

要通过WebStorm IDE执行Dart程序 -

  • 右键单击IDE上的Dart脚本文件。 (该文件应包含main()函数以启用执行)
  • 单击“run <file_name>”选项。 下面给出了相同的屏幕截图
Dart 语法-创客青年博客

也可以单击“运行按钮”按钮或使用快捷键Ctrl + Shift + F10执行Dart脚本。

Dart 语法-创客青年博客

Dart命令行选项

Dart命令行选项用于修改Dart脚本执行。 Dart的常用命令行选项包括以下内容。

Dart命令行选项
序号 命令行选项&描述
1 -c或--c (启用断言和类型检查-选中模式)
2 --version(显示VM版本信息)
3 --packages (指定程序包解析配置文件的路径)
4 -p (指定在何处查找导入的库。 此选项不能与--packages一起使用)
5 -h或--help(显示帮助)

启用检查模式

Dart程序以两种模式运行,即

  • 检查模式
  • 生产模式(默认)

非常建议在开发和测试期间以检查模式运行Dart VM,因为它会添加警告和错误以帮助开发和调试过程。 选中的模式会强制执行各种检查,例如类型检查等。要打开选中的模式,请在运行脚本时在脚本文件名之前添加-c或--checked选项。

但是,为了在运行脚本时确保性能优势,建议在生产模式下运行脚本。

请考虑以下Test.dart脚本文件

void main() { 
   int n = "hello"; 
   print(n); 
}

输入命令运行脚本

dart Test.dart

虽然存在类型不匹配,但在关闭检查模式时脚本会成功执行。 该脚本将产生以下输出:

hello

现在再尝试使用“ - - checked”或“-c”选项执行脚本

dart -c Test.dart

dart - - checked Test.dart

Dart VM将抛出一个错误,指出存在类型不匹配。

Unhandled exception: 
type 'String' is not a subtype of type 'int' of 'n' where 
   String is from dart:core 
   int is from dart:core 
#0  main (file:///C:/Users/Administrator/Desktop/test.dart:3:9) 
#1  _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart :261) 
#2  _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)

Dart中的标识符

标识符是给予程序中元素的名称,如变量,函数等。标识符的规则是

标识符可以包括字符和数字。 但是,标识符不能以数字开头。

  • 除下划线(_)或美元符号($)外,标识符不能包含特殊符号。
  • 标识符不能是关键字。
  • 它们必须是独一无二的
  • 标识符区分大小写。
  • 标识符不能包含空格。

下表列出了有效和无效标识符的一些示例:

Dart标识符
有效标识符 无效标识符
firstName Var
first_name first name
num1 first-name
$result 1number

Dart中的关键字

关键词在语言的上下文中具有特殊含义。 下表列出了Dart中的一些关键字。这些关键词不能用作命名。

Dart关键字
abstract 1 continue false new this
as 1 default final null throw
assert deferred 1 finally operator 1 true
async 2 do for part 1 try
async* 2 dynamic 1 get 1 rethrow typedef 1
await 2 else if return var
break enum implements 1 set 1 void
case export 1 import 1 static 1 while
catch external 1 in super with
class extends is switch yield 2
const factory 1 library 1 sync* 2 yield* 2

空白和换行

Dart忽略程序中出现的空格,制表符和换行符。 您可以在程序中自由使用空格,制表符和换行符,并且可以自由地以简洁一致的方式格式化和缩进程序,使代码易于阅读和理解。

Dart大小写敏感

Dart大小写敏感。 这意味着Dart区分大写和小写字符。

声明以分号结尾

每行指令都称为语句。 每个dart语句必须以分号(;)结尾。 一行可以包含多个语句。 但是,这些语句必须用分号分隔。

Dart中注释

注释是提高程序可读性的一种方法。 注释可用于包含有关程序的其他信息,如代码的作者,有关函数/构造的提示等。编译器会忽略注释。

Dart支持以下类型的注释

  • 单行注释(//) - “//”和行尾之间的任何文本都被视为注释
  • 多行注释(/ * * /) - 这些注释可能跨越多行。

例子

// 这是一个单行注释
  
/* 
这是一个
多行注释
*/

Dart面向对象思想

Dart是一种面向对象的语言。 面向对象是一种遵循真实世界建模的软件开发范例。 Object Orientation将程序视为通过称为方法的机制相互通信的对象集合。

对象

对象 - 对象是任何实体的实时表示。 根据Grady Brooch,每个对象必须具有三个功能

  • 状态 - 由对象的属性描述。
  • 行为 - 描述对象的行为方式。
  • 标识 - 将对象与一组类似此类对象区分开的唯一值。

类 - OOP方面的类是创建对象的蓝图。 类封装了对象的数据。

方法

方法 - 方法促进对象之间的通信。

Dart面向对象,例子:

class TestClass {   
   void sayHello() {     
      print("Hello,pipipi.net"); 
   } 
}  
void main() {   
   TestClass c = new TestClass();   
   c.sayHello();  
}

上面的示例定义了一个类TestClass。 该类有一个方法sayHello()。 该方法在终端上打印字符串“Hello World”。 new关键字创建类的对象。 该对象调用方法sayHello()。

代码应该产生以下输出

Hello,pipipi.net