什么是Dart?为什么使用它?特性和概念有哪些?

2020-03-2811:10:55编程语言入门到精通Comments4,719 views字数 2225阅读模式

什么是Dart?为什么使用它?

Dart 是一个由谷歌开发的通用编程语言,后来被 Ecma (Ecma-408)批准为标准。它用于构建 web、服务器、桌面和移动应用程序。
Dart 是一种面向对象的、类定义的、垃圾回收语言 ,使用C 样式的语法可以随意地转换为 JavaScript。 它支持接口、 mixin、抽象类、具体化泛型、静态类型等。
什么是Dart?为什么使用它?特性和概念有哪些?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

Dart部分特性

  • Dart是AOT(Ahead Of Time)编译的,可编译成快速,可预测的本地代码
  • Dart可以JIT(Just In Time)编译,开发周期快,为Flutter热重载提供基础
  • Dart可以轻松创建60fps运行的流畅动画和转场
  • Dart的声明式编程布局,易于阅读和可视化,不需要单独的声明式布局语言,如:XML,JSX
  • Dart非常易于学习,具有静态和动态语言,编程人员都熟悉的特性

Dart重要概念

  • 所有东西都是对象,无论是变量,数字,函数,null等都是对象,所有对象都Object类的子类
  • Dart语言是强类型编程,一旦确定类型,则不可改变变量类型,编译时会进行语法检查,但Dart允许弱类型语言式的编程
  • Dart代码在运行前解析,指定数据类型和编译时常量,可以提高运行速度
  • Dart语言的统一入口是main函数
  • Dart的私有特性是在变量或者函数名前面加上下划线 _
  • Dart 支持async/await异步处理

Dart关键字

什么是Dart?为什么使用它?特性和概念有哪些?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

Dart内置库

包名描述
dart:async异步编程,提供Future,Stream类
dart:collection集合
dart:convert不同类型的字符编码解码
dart:coreDart语言核心功能,内置类型
dart:html网页开发用到的库
dart:io文件读写,IO相关
dart:math数字常量及函数,随机算法等
dart:svg事件和动画矢量图支持

Dart类型系统

Dart 是类型安全的: 它结合使用静态类型检查和运行时检查,以确保变量的值总是与变量的静态类型匹配。 尽管类型是强制的,但是类型声明是可选的,因为 Dart 会在编译时执行类型推断。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

面向对象

类定义及接口
Dart 是一个面向对象编程语言,同时支持基于 Mixin 的继承机制。 每个对象都是一个类的实例,所有的类都继承于Object,基于 Mixin 的继承 意味着每个类(Object 除外)都只有一个超类,一个类的代码可以在其他多个类继承中重复使用,从而达到多重继承的效果。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

class Person{
    String name;
    int age;Person(this.name,this.age);}abstractclass Animal{
     void eat();}

基本数据类型

什么是Dart?为什么使用它?特性和概念有哪些?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

  • 核心概念
    Dart中所有类型都是对象,都继承自Object类,上述类型的父类都是Object, 在Dart中null类型也继承自Object类。

基本语法

变量声明

/// 定义基本类型 , 使用var关键字进行类型定义时 ,定义并初始化时,后续赋值只能是相同类型。
/// 使用var 定义,不初始化 , 则后续可以任意类型赋值, 最终类型是dynamic类型,dynamic类型,不会检测成员,Object定义的变,会检测对象成员。
var variable = '12’;
/// 使用确定类型定义变量 , String 类型 , 使用确定类型赋值必须是相同类型
String name = ‘zeno’;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

一切变量的初始化都是null,包括bool类型初始化也是null文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

常量声明

/// 使用const 定义的常量是不可变的, 需要定义并赋值,常量定义的集合,都是只读的,特性会传递到子元素,在内存中会复用相同内容对象
const PI = 3.1454567;
/// 使用final 定义的变量, 只能赋值一次,只作用在自身
final DE = 123231313;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

集合

List

var ls =List();var ls =<String>[];

Ls2.add(‘one’);
Ls2.addAll([1,2,3]);
Ls2.add(‘two’);
Ls2.remove(‘one’);

Map

var personInfo = Map<String,Object>();var personInfo =<String,Object>{};

personInfo[‘name’]= ‘zeno’;
personInfo[‘age’]=18;

枚举

枚举类型是一种特殊的类,通常用来表示相同类型的一组常量。使用关键字enum定义枚举。枚举的每一个值都有一个index属性,index从0开始计数。枚举不能被继承,不能创建实例。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

enum ResponseState{
    Success,
    Error,
    Failure
}

时间处理

DateTime 对象代表某个时刻。时区是 UTC 或者 本地时区。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html


DateTime.now();DateTime(2019,3,3);
DateTime.parse(2019-03-0320:30:00);
DateTime.fromMillisecondsSinceEpoch(1551616200000);

异常

Dart 异常是非检查异常。 方法不一定声明了他们所抛出的异常, 并且你不要求捕获任何异常。 Dart 代码可以 抛出任何非 null 对象为异常,不仅仅是实现了 Exception 或者 Error 的对象。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html

throw new FormatException('Expected at least 1 section’);throw 'Out of llamas!;try{}catch(){}finally{}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/17952.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/17952.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定