《Dart编程语言》读书笔记
-
Dart是由谷歌出品的,开始旨在取代javascript,能够运行于浏览器的小众语言。然而TypeScript已经占领了这一领域。
-
Flutter和飞鲨系统的出现,推进了Dart的发展。
-
Dart语法即像Java又类似于javascript。这与语言的设计思路有关,作者希望开发者可以快速上手。
-
Dart的一切都是对象,甚至函数都是对象,可以类比javascript。
library mymoudle;
import 'dart:math';
class Point /* extends Object */ {
var rho, theta;
Point(this.rho, this.theta);
Point(a,b) {
rho = sqrt(a*a + b*b);
theta = atan(a/b);
}
get x => rho * cos(theta);
set x(newX) {
rho = sqrt(newX*newX + y*y);
theta = acos(newX/rho);
}
scale(factor) => new Point(rho*factor, theta);
operator + (p) => new Point(x + p.x, y + p.y);
static distance(p1, p2) {
return 1;
}
}
-
Dart可以编译成机器码、字节码、js代码,类似于Kotlin。
-
Dart的一大特色就是可选类型,可以与TypeScript做类比。本质上它是动态类型语言,但是又对静态类型做了支持。类型问题不会导致编译失败,IDE只会给出提示,运行时检查失败。这是一种折中设计,个人认为很高明。
var number = 10;
var str = "name";
// the complier just gives the warnig.
print(str + number);
-
Dart的数字类型系统像是Java的BigInteger,没有长度限制(
编译为js是一个特例
)。 -
Dart以模块为基本单元,类似Swift。核心库被隐含的导入。
library mymoudle;
import 'dart:math';
-
单继承,默认继承Object类。
-
支持setter getter
class Demo extends Object {
get info => this.info;
}
var demo = new Demo();
print(demo.info);
-
所有变量如实例变量,局部变量,全局变量,在没有初始化时都会被赋值为null。null也是一个对象,是Null类的唯一实例。
-
所有暴漏的字段都不是直接访问的,都是调用编译器生成的getter、setter,类似于Swift。
-
通Java一样支持默认的构造函数,也即构造函数可以缺省。
-
Dart mixin
-
Dart sync*