Dart 编程 - 语法

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

  • 变量和运算符
  • 函数
  • 表达式和编程结构
  • 决策和循环结构
  • 注释
  • 库和包
  • 类型定义
  • 以集合/泛型表示的数据结构

您的第一个 Dart 代码

让我们从传统的"Hello World"示例 −

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

main() 函数是 Dart 中的预定义方法。此方法充当应用程序的入口点。Dart 脚本需要 main() 方法来执行。print() 是一个预定义函数,它将指定的字符串或值打印到标准输出,即终端。

上述代码的输出将是 −

Hello World!

执行 Dart 程序

您可以通过两种方式执行 Dart 程序 −

  • 通过终端
  • 通过 WebStorm IDE

通过终端

通过终端执行 Dart 程序 −

  • 导航到当前项目的路径
  • 在终端窗口中输入以下命令
dart file_name.dart

通过 WebStorm IDE

通过 WebStorm IDE 执行 Dart 程序 −

  • 右键单击 IDE 上的 Dart 脚本文件。 (该文件应包含 main() 函数以启用执行)

  • 单击 "运行 <file_name>" 选项。下面给出了相同的屏幕截图 −

运行 Test1 Dart

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

Dart 命令行选项

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

Sr.No 命令行选项 &描述
1 -c 或 --c

同时启用断言和类型检查(已检查模式)。

2 --version

显示 VM 版本信息。

3 --packages <path>

指定包解析配置文件的路径。

4 -p <path>

指定查找导入库的位置。此选项不能与 --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 中的标识符

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

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

  • 标识符不能包含除下划线 (_) 或美元符号 ($) 之外的特殊符号。

  • 标识符不能是关键字。

  • 它们必须是唯一的。

  • 标识符区分大小写。

  • 标识符不能包含空格。

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

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

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 支持以下类型的注释 −

  • 单行注释 ( // ) − "//" 和行尾之间的任何文本都被视为注释

  • 多行注释 (/* */) − 这些注释可能跨越多行。

示例

// this is single line comment  
  
/* This is a   
   Multi-line comment  
*/ 

Dart 中的面向对象编程

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

  • 对象 − 对象是任何实体的实时表示。根据 Grady Brooch 的说法,每个对象都必须具有三个特征 −

    • 状态 − 由对象的属性描述。

    • 行为 − 描述对象将如何行动。

    • 身份 −一个唯一值,用于将对象与一组类似的对象区分开来。

  • − 从 OOP 的角度来看,类是创建对象的蓝图。类封装了对象的数据。

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

示例:Dart 和面向对象

class TestClass {   
   void disp() {     
      print("Hello World"); 
   } 
}  
void main() {   
   TestClass c = new TestClass();   
   c.disp();  
}

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

代码应产生以下 输出

Hello World