Synonym

这个是基于1.x的。官方目前没有更新2.x的对比。

  • 最新说明: https:/www.dartlang.org/resources/synonyms
  • 1.x中文翻译:http://www.dartlang.cc/docs/synonyms/

捡几个主要的说

嵌入脚本

// 使用下面两个标签可以支持所有浏览器

// 用于支持 Dart VM 的浏览器
<script type='application/dart' src='program.dart'></script>

// 如果浏览器不支持 Dart VM
// 则下面的脚本会载入 javascript 版本的
// 程序代码
<script src="packages/browser/dart.js">
</script>
1
2
3
4
5
6
7
8
9
10

程序入口

// 必须
main() {
  // 这是程序的入口
}

// 或者
main(List<String> args) {
  // ...
}
1
2
3
4
5
6
7
8
9

是否支持Dart

<script type='text/javascript'>
  if (navigator.userAgent.indexOf('(Dart)') === -1) {
    // 浏览器不支持 Dart
  }
</script>
1
2
3
4
5

默认值

var myName;
// == null

int x;
// == null

1
2
3
4
5
6

集合

var a = new List();
var a = [];
var a = ['apple', 'banana', 'cherry'];

a.add('orange');

a.length == 4;

//   Dart 支持泛型
var a = new List<String>();
1
2
3
4
5
6
7
8
9
10

Sets (不包含重复元素的集合)

var fruits = new Set();
fruits.add('oranges');
fruits.add('apples');
fruits.length // == 2

fruits.add('oranges'); // duplicate of existing item
fruits.length // == 2
1
2
3
4
5
6
7

Queues (FIFO)

// Queues 优化了从头开始删除元素
var queue = new Queue();
queue.add('event:32342');
queue.add('event:49309');

print(queue.length);  // 2

var eventId = queue.removeFirst();

print(eventId == 'event:32342'); // true
print(queue.length); // 1
1
2
3
4
5
6
7
8
9
10
11

检测空字符串

var emptyString = '';

if (emptyString.isEmpty) {
  print('use isEmpty');
}
1
2
3
4
5

检测是否为Null

var myNull = null;

if (myNull == null) {
  print('use == null to check null');
}
1
2
3
4
5

检测是否为NaN

var myNaN = 0/0;

if (myNaN.isNaN) {
  print('use isNaN to check if a number is NaN');
}
1
2
3
4
5

Closures and counters in loops

// Dart doesn't reuse and close over the same
// loop variable in each iteration
var callbacks = [];
for (var i = 0; i < 2; i++) {
  callbacks.add(() => print(i));
}

callbacks[0]() // == 0
1
2
3
4
5
6
7
8

类反射

var name = "Bob";
name.runtimeType  // == String

1
2
3

Eval

// Dart 不支持 eval()。这不是一个 Bug。// D

1
2