Dart编程语法
语法定义了一组用于编写程序的规则。每种语言规范都定义了自己的语法。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编程语法的更多相关文章
- Dart编程实例 - 类型测试操作符 is!
Dart编程实例 - 类型测试操作符 is! void main() { double n = 2.20; var num = n is! int; print(num); } 本文转自:http:/ ...
- Dart编程实例 - 类型测试操作符is
Dart编程实例 - 类型测试操作符is void main() { int n = 2; print(n is int); } 本文转自:http://codingdict.com/article/ ...
- Dart编程实例 - 相等和关系操作符
Dart编程实例 - 相等和关系操作符 void main() { var num1 = 5; var num2 = 9; var res = num1>num2; print('num1 gr ...
- Dart编程实例 算术操作符
Dart编程实例 算术操作符 void main() { var num1 = 101; var num2 = 2; var res = 0; res = num1+num2; print(" ...
- Dart编程实例 - Const 关键字
Dart编程实例 - Const 关键字 void main() { final v1 = 12; const v2 = 13; v2 = 12; } 本文转自:http://codingdict.c ...
- Dart编程实例 - Final 关键字
Dart编程实例 - Final 关键字 void main() { final val1 = 12; print(val1); } 本文转自:http://codingdict.com/articl ...
- Dart编程实例 - Dynamic 关键字
Dart编程实例 - Dynamic 关键字 void main() { dynamic x = "tom"; print(x); } 本文转自:http://codingdict ...
- Dart编程实例 - Dart 面向对象编程
Dart编程实例 - Dart 面向对象编程 class TestClass { void disp() { print("Hello World"); } } void main ...
- Dart编程实例 - Enabling Checked Mode
Dart编程实例 - Enabling Checked Mode void main() { int n="hello"; print(n); } 本文转自:http://codi ...
随机推荐
- 2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest E:Black or White
这道题可以比较容易看出是线性DP.设dp[i]代表把前i个格子刷成目标状态的最小步数. 写出状态转移方程 dp[i]=min( dp[j]+calc(j+1,i) ) (i-j<=k) calc ...
- transformer模型计算图
参考了这篇文章:http://nlp.seas.harvard.edu/2018/04/03/attention.html 结合代码和图,能更加清楚的了解transformer中的一些原理(ps,等下 ...
- Android jniLibs下目录详解(.so文件)
http://www.jianshu.com/p/b758e36ae9b5 最近又研究了一下,参考了一下:三星/联发科等处理器规格表 更新时间:2017年5月手机CPU架构体系分类及各大厂商 PS:我 ...
- linux,进行批量下载文件操作
wget -i url.txt -P ./Photo 批量下载图片(一般是某个相册的图片) 首先先得到一张图片的地址如:www.example.com/pic/001.jpg 同相册的图片地址会有一 ...
- vue static和assets的区别
static和assets的区别,原理就在于webpack是如何处理静态资源的 assets 1)在vue组件中,所有模板和css都会被vue-html-loader和css-loader解析,并查找 ...
- Delphi CoCreateGuid()函数 获取GUID
Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) GUID/UUID是通过特定算法产生的一个二进制 ...
- 学 Win32 汇编[20]: 洞察标志寄存器
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 NT IOPL OF DF IF TF SF ZF AF PF CF 未使用 嵌套标志 I/O权限标志占2位 溢出标志 方向 ...
- android API版本对应的系统版本及Android获取手机和系统版本等信息的代码
学了这么久的Android,竟然一直对其API对应的名称关系一值搞不清楚,现在网上认真看了下资料,转载一个觉得写得不错的作者的文章,记下来: [背景] 之前折腾android期间,慢慢地知道了,And ...
- Mac 安装react-native 环境踩坑记
我的工程创建时间是2019.7.11号下午 :首先看一下最后我的工程的package.json各个包的版本: { "name": "MyApp", &quo ...
- [nRF51822 AK II 教程]第一课,开发环境的配置及背景介绍【转】
低功耗蓝牙4.0是全新的技术,并不向下兼容,也就是说它和蓝牙3.0.2.0什么的都不能通信的.另外,蓝牙4.0目前的规范只能做外设和主机(智能手机,电脑等)通讯,也就是说你想用一个单模的蓝牙4.0开发 ...