语法定义了一组用于编写程序的规则。每种语言规范都定义了自己的语法。Dart语法有如下内容组成:

  • 变量和运算符
  • 函数
  • 表达式和代码块
  • 判断和循环结构
  • 注释
  • 库和包
  • 类型定义
  • 数据结构表示:集合/泛型

你的第一个dart程序

让我们从传统的 Hello World 示例开始

main() {
print("你好Dart!");
}

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

上述代码的输出结果为:

你好Dart!

执行dart程序

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

  • 通过终端
  • 通过IDE

通过终端

通过终端执行Dart程序

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

通过IDE

要通过IDE执行Dart程序

  • atom : Ctrl + Shift + B
  • vscode: Ctrl + Alt + N
  • WebStrom: Ctrl + Shift + F10

Dart命令行选项

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

序号 命令行选项和说明
1 -c or --c

启用断言和类型检查(选中模式)。

2 --version

显示VM版本信息。

3 --packages <path>

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

4 -p <path>

指定在何处查找导入的库。此选项不能与--packages一起使用。

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

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

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

// 这是一个单行注释  

/* 这是
多行注释
*/

Dart中面向对象编程(OOP)

Dart是一种面向对象的语言。面向对象是一种遵循真实世界建模的软件开发范例。Object

Orientation将程序视为通过称为方法的机制相互通信的对象集合。

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

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

  • 行为 - 描述对象的行为方式。

  • 标识 - 将对象与一组类似此类对象区分开的唯一值。

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

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

示例:Dart和OOP

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

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

代码输出

Hello World

本文转自:

Dart编程语法的更多相关文章

  1. Dart编程实例 - 类型测试操作符 is!

    Dart编程实例 - 类型测试操作符 is! void main() { double n = 2.20; var num = n is! int; print(num); } 本文转自:http:/ ...

  2. Dart编程实例 - 类型测试操作符is

    Dart编程实例 - 类型测试操作符is void main() { int n = 2; print(n is int); } 本文转自:http://codingdict.com/article/ ...

  3. Dart编程实例 - 相等和关系操作符

    Dart编程实例 - 相等和关系操作符 void main() { var num1 = 5; var num2 = 9; var res = num1>num2; print('num1 gr ...

  4. Dart编程实例 算术操作符

    Dart编程实例 算术操作符 void main() { var num1 = 101; var num2 = 2; var res = 0; res = num1+num2; print(" ...

  5. Dart编程实例 - Const 关键字

    Dart编程实例 - Const 关键字 void main() { final v1 = 12; const v2 = 13; v2 = 12; } 本文转自:http://codingdict.c ...

  6. Dart编程实例 - Final 关键字

    Dart编程实例 - Final 关键字 void main() { final val1 = 12; print(val1); } 本文转自:http://codingdict.com/articl ...

  7. Dart编程实例 - Dynamic 关键字

    Dart编程实例 - Dynamic 关键字 void main() { dynamic x = "tom"; print(x); } 本文转自:http://codingdict ...

  8. Dart编程实例 - Dart 面向对象编程

    Dart编程实例 - Dart 面向对象编程 class TestClass { void disp() { print("Hello World"); } } void main ...

  9. Dart编程实例 - Enabling Checked Mode

    Dart编程实例 - Enabling Checked Mode void main() { int n="hello"; print(n); } 本文转自:http://codi ...

随机推荐

  1. qt大小写字符串比较

    https://blog.csdn.net/GraceLand525/article/details/48625593 Qt::CaseSensitivity cs = Qt::CaseInsensi ...

  2. vue之路由导航守卫-全局前置守卫

    一.使用方式 全局前置守卫用于在路由配置生效之前进行一些动作,可以使用 router.beforeEach 注册一个全局前置守卫: const router = new VueRouter({ ... ...

  3. Centos7命令行安装Tomcat以及配置防火墙开放端口

    [转载]Centos 7 yum安装tomcat 命令: 系统环境CentOS Linux release 7.2.1511 (Core) 一.搭建准备:1.先到tomcat官网https://tom ...

  4. vue 父到子动态传值 子组件实时渲染

    近期项目中需要一个功能,根据选择不同的 团队片区 id 展示不同的数据,团队id 在父组件  数据在子组件中展示. 根据不同的团队 动态渲染数据总览. 父组件: <Cards ref=" ...

  5. 深入理解Magento - 第六章 - 高级Magento模型

    我们讲过Magento有两种模型,简单模型和EAV(Entity Attribute Value)模型.上一章我们讲过所有的Magento模型都是继承自Mage_Core_Model_Abstract ...

  6. Vuex 常规用法

    背景 很多时候我们已经熟悉了框架的运用,但是有时候就是忘了怎么用 所以这里想记下大部分的框架使用方法,方便使用的时候拷贝 一.安装 npm 方式 npm install vuex --save yar ...

  7. 【Dart学习】-- Dart之泛型

    一,概述  Dart是一种可选的类型语言.Dart中的集合默认是异构的.换句话说,单个Dart集合可以托管各种类型的值.但是,可以使Dart集合保持同质值.泛型的概念可以用来实现同样的目的. 泛型的使 ...

  8. (转)OpenFire源码学习之十三:消息处理

    转:http://blog.csdn.net/huwenfeng_2011/article/details/43417817 消息处理流程总揽(该图来源于互联网,图片很大,不过类容还是挺清楚的.不方便 ...

  9. arttemplate 后台返回的数据格式问题

    1. 2.JSON.parse() 方法用于将一个 JSON 字符串转换为对象. $("body").on("click","#analyze&quo ...

  10. strcmp 和 strcoll的区别

    功能和strcmp类似,用法也一样.   特别注意:strcoll()会依环境变量LC_COLLATE所指定的文字排列次序来比较s1和s2 字符串.   strcmp是根据ASCII来比较2个串的.  ...