Dart语言

Dart语言概览

  • 一切皆对象,所有对象均继承自Object
  • 虽然Dart是强类型语言,但是变量类型是可选的,因为Dart可以自动推断变量类型
  • Dart支持泛型,List
  • Dart支持顶层方法,也可以支持类方法或者对象方法,同时也可以在方法内部创建方法
  • Dart支持顶部变量,也可以支持类变量或者对象变量
  • Dart没有public、private等关键字,如果以(_)开头则代表私有变量

Dart定义变量

  • 明确声明:变量类型 变量名称 = 赋值(定义的变量可以修改值,但是不能赋值其他类型)
  • 类型推导:var/dynamic/const/final 变量名称 = 赋值(实际开发过程中不推荐使用dynamic,因为通过它定义的变量会关闭类型检查,即如有错误,编译期不报错,运行期直接crash)const编译期确定内容、final赋值期间确定
  • 变量声明:var可以接收任何类型,但是一旦赋值类型便会确定。dynamic和object都可以在后期改变赋值类型。dynamic声明的对象编译器会提供所有可能的组合,而object声明的只可以使用object的属性和方法,所以dynamic容易引起运行时错误。

Dart数据类型

  • 整数int、浮点数double,可表示范围取决于运行平台
  • 字符串转数字 int.parse('111')
    数字转字符串num.toString()
  • bool取值true和false,Dart不能判断非0即真或非空即真
  • 字符串类型
  • 单引号或者双引号创建字符串 三个单引号或者双引号表示多行字符串 ${}拼接
  • Dart集合类型List数组/Set集合/Map字典

Dart函数 {}命名可选参数[]位置可选参数 只有可选参数才可使用默认值

  • 词法作用域(({}))
  • 所有函数都会返回值,如未指定则返回null

Dart运算符

  • 除、整除、取模(/、~/、%)
  • ??=赋值 相当于为null判断的三目运算符
  • 条件运算符 expr1??expr2,expr1是null则返回expr2,否则返回expr1
  • 级联语法为.. 表示同一对象连续操作

类和对象

  • class关键字定义类
  • Dart通常可以省略this但是有命名冲突时不可省略

Dart异步:Dart是单线程的

  • Dart中存在事件队列以及微任务队列,微任务队列优先级高于事件队列
  • 外部任务事件在事件队列中,如IO、计时器、点击、绘制事件等
    微任务来源于Dart内部
  • Dart单线程执行代码顺序:
  • Dart入口为main函数,所以优先执行main函数代码
  • main函数执行完毕后启动事件循环,启动后加载执行队列中任务
  • 先进先出顺序执行微任务队列
  • 先进先出顺序执行事件队列任务
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容