Dart 语言

216 阅读2分钟

学习资源

  • dartpad 使用 DartPad 可以体验 Dart 的大部分语言功能

打印与调试

在 dart 中没有 console 对象,使用 print 函数来

print('hello, world!');

书写规范:使用;来定义,开始的时候还是要写。以后怎么样可以根据项目规范来处理。

认识 dart

// 定义一个函数
printInteger(int aNumber) {
  print('The number is $aNumber.'); // 打印到控制台。
}

// 应用从这里开始执行。
main() {
  var number = 42; // 声明并初始化一个变量。
  printInteger(number); // 调用函数。
}

变量

  • var 变量
  • const 常量
  • final 不变量

dart 是有类型系统的,但是这里我们暂且不考虑类型。不考虑类型的时候,会有隐式的类型推论。

const 定义的常量,我们修改了之后,我们会得到这样的错误:

void main() {
  var a = 'a';
  const aa = 'aa';
  aa = '_aa';
  print(a);
  print(aa);
  for (int i = 0; i < 5; i++) {
    print('hello ${i + 1}');
  }
}
Error compiling to JavaScript:
main.dart:6:3:
Error: Can't assign to the const variable 'aa'.
  aa = '_aa';
  ^^
Error: Compilation failed.

const 的错误是❌是不能正确的分配的问题。final d定义的变量会提示 Error: 一个 final 变量只能被设置一次。

他们表现都是不能重新分配,但是什么不同呢?

  • 实例变量可以是 final 类型但不能是 const 类型。
  • 必须在构造函数体执行之前初始化 final 实例变量 —— 在变量声明中,参数构造函数中或构造函数的初始化列表中进行初始化。

内置类型

  • Number
    • int
    • double
  • String
  • Boolean
    • bool
  • List (也被称为 Array)
  • Map
    • key-value
  • Set
  • Rune (用于在字符串中表示 Unicode 字符)
  • Symbol 通过字面量 Symbol ,也就是标识符前面添加一个 # 号,来获取标识符的 Symbol 。(Symbol 可能你永远也不会用...)

函数

函数也是对象,函数不像其他语言需要 function/func 字段声明。

  • 主函数 main
  • 函数可以作为参数,与JavaScript一致
  • 匿名函数
  • 作用域
  • 闭包(能编译成js, 这一点就很好理解了)
  • 测试与断言 assert
  • 隐式的返回值

运算符

  • 算术
  • 关系
  • 类型
  • 赋值
  • 逻辑
  • 按位
  • 移位
  • 条件
  • 级联
  • ()
  • []
  • .
  • ?.

条件

  • if-else
  • for
  • while/do-while
  • continue/break
  • switch/case
  • assets 只有这一点是不同的。

异常

  • try
  • catch
  • finally

类 class

基于类和 mixin 继承机制的面向对象的语言. 每个对象都是一个类的实例,所有的类都继承于 Object(这一点和 JavaScript 相似).

  • 构造函数,就是一个类, new 关键字是可选的
  • 扩展类,
  • 重写修饰器
  • 枚举类型
  • Mixin 是复用类代码的一种途径, 复用的类可以在不同层级,之间可以不存在继承关系。通过 with 后面跟一个或多个混入的名称。
  • 静态属性和方法

泛型

泛型其实就是约束类型的,将一个变量或者一批变量约束为某种类型,泛型会根据泛型参数的不同,约束不同的类型。

  • 使用 import 导入库
  • 使用 export 语句创造库

异步

  • async/await
  • Future
  • Stream

生成器

  • 生成器

可调用类

  • call

隔离区

  • Isolates

Typedefs

是类型别名,类似于 TypeScript 的 type 关键字

元数据

meta-data, 使用 @ 修饰符来进行修饰。

注释

类型

类型书写的位置,在变量的前面。