Dart is a client-optimized language for fast apps on any platform。
Dart SDK 可以用来开发 WEB、命令行程序、服务端程序等。
如果是开发移动端APP,直接下载 Flutter 就行,不用在下载 Dart SDK。
我们这里为了学习和演示,还是先下载一个 Dart SDK。
Mac 可以直接使用 brew 安装:
$ brew tap dart-lang/dart
$ brew install dart
查看要安装的 dart 信息:
$ brew info dart
安装成功后,我们可以使用 dart --version
来查看dart的版本:
$ dart --version
Dart VM version: 2.5.0 (Fri Sep 6 20:39:27 2019 +0200) on "macos_x64"
可以看到,我们现在安装的是 dart 2.5版本。
查看 dart 安装到哪里了?
$ which dart
/usr/local/bin/dart
$ ls -al /usr/local/bin/dart
lrwxr-xr-x 1 wangtom admin 29 9 25 10:22 /usr/local/bin/dart -> ../Cellar/dart/2.5.0/bin/dart
可以看到 dart 安装到了 /usr/local/Cellar/dart/2.5.0
目录下:
$ /usr/local/Cellar/dart/2.5.0/bin/dart --version
Dart VM version: 2.5.0 (Fri Sep 6 20:39:27 2019 +0200) on "macos_x64"
查看 dart 目录:
$ tree /usr/local/Cellar/dart/2.5.0 -L 2
/usr/local/Cellar/dart/2.5.0
├── INSTALL_RECEIPT.json
├── LICENSE
├── README
├── bin
│ ├── dart -> ../libexec/bin/dart
│ ├── dart2aot
│ ├── dart2js
│ ├── dartanalyzer
│ ├── dartaotruntime
│ ├── dartdevc
│ ├── dartdoc
│ ├── dartfmt
│ └── pub
└── libexec
├── bin
├── dartdoc_options.yaml
├── include
├── lib
├── model
├── revision
└── version
可以看到 bin 目录下处理 dart 目录,还有很多其他的命令。
比如,将Dart编译为JavaScript的命令: dart2js
。
比如,Dart官方的包管理器命令: pub
。
比如,Dart代码格式化工具命令: dartfmt
。
详见Dart官网-获取Dart语言SDK。
创建一个 dart-dev/examples
目录,在目录中创建一个文件,名为hello.dart
:
其代码如下:
// 第一个dart代码
void main() {
print('Hello, World!');
}
每个 dart
应用都有一个 main() 函数。使用函数 print() 将文字输出到控制台。
进入代码目录,查看 hello.dart
文件内容:
$ cd dart-dev/examples
$ cat hello.dart
// 第一个dart代码
void main() {
print('Hello, World!');
}
可以使用 dart hello.dart
执行代码:
$ dart hello.dart
Hello, World!
所有变量引用的都是 对象,每个对象都是一个 类 的实例。数字、函数以及 null 都是对象。所有的类都继承于 Object 类。
尽管 Dart 是强类型语言,但是在声明变量时指定类型是可选的,因为 Dart 可以进行类型推断。
Dart 支持泛型,比如 List(表示一组由 int 对象组成的列表)或 List(表示一组由任何类型对象组成的列表)。
Dart 没有类似于 Java 那样的 public、protected 和 private 成员访问限定符。如果一个标识符以下划线 (_
) 开头则表示该标识符在库内是私有的。
代码示例:
演示变量的定义,函数定义与调用等。
// dart代码
void main() {
print('商品详情: ');
print('----------------');
// 直接调用方法
// getGoodsInfo('最新款iPhone蓝色手机', 50, 8999.58);
// getGoodsInfo('小米5G环绕屏概念手机', 80, 19999.22);
// 定义变量,并传递参数
String iPhoneName = "新款苹果手机"; // 定义一个String类型
int iPhoneStock = 50; // 定义一个int类型
double iPhonePrice = 8999.58; // 定义一个double类型
// 调用返回,并赋值给一个变量 goods, 然后打印输出
var goods = getGoodsInfo(iPhoneName, iPhoneStock, iPhonePrice);
print(goods); //输出: {name: 新款苹果手机, stock: 50, price: 8999.58, tags: {热销, 库存紧张}}
}
// 定义一个函数,传入商品的三个参数,然后返回一个对象
getGoodsInfo(String name, int stock, double price) {
print('商品名称: $name 商品库存: $stock 商品价格: $price '); // 打印输出到控制台。
// 定义一个Set变量,用来存储商品标签
var tags = <String>{};
tags.add('热销');
if (stock >= 100) {
tags.add('库存充足');
} else if (stock <= 0 ) {
tags.add('库存不足');
} else {
tags.add('库存紧张');
}
// 定义一个 Object
var item = {
'name': name,
'stock': stock,
'price': price,
'tags': tags
};
return item;
}
https://dart.dev/get-dart
http://www.dartdoc.cn/guides/language/language-tour
[END]