这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战
谷歌公司开发的,类型安全的面向对象的编程语言,被应用于web,服务器,移动应用和物联网等领域 Dart是强类型的语言 运行方式:
- 原生虚拟机
- JavaScript引擎(Dart代码可以转成js代码,然后运行在浏览器上)
Dart和js对比
| Dart | JavaScript | |
|---|---|---|
| Flutter | React | |
| 第三方包 | pub.dev | npmjs.com |
| 包管理命令 | Pub | Npm |
| 有用网站 | 官网: 英文dart.dev/ 中文dart.cn/ 在线运行代码: dartpad.dartlang.org/ dartpad.cn/ |
Dart语法
//声明函数,不需要function关键字;void表示函数无返回值
void printInteger(int num){//参数要声明类型
print('the number is $num');//打印用print,不用console
}
//入口文件-应用从这里开始执行
void main(){
var num = 42;//在Dart中,用var声明的变量表示类型不固定,Dart中var 不存在变量提升
printInteger(num);//调用函数
}
- 注释语法和js一致
- 声明函数不需要关键字(js中用function来声明函数)
- 函数和参数前面都有类型声明,void表示没有返回值,int表示整型数字
- 打印使用print(js中使用console.log)
- 每行代码结束时,必须有分号
- main是入口函数,Dart程序总是从main函数开始执行
- 用var声明的变量,其数据类型是动态的,这类变量的类型 (int) 由它的初始值决定
变量
变量是一个引用,Dart万物皆对象,变量存储的是对象的引用
- 声明变量:
- 明确指定类型:int age = 18
- 不明确类型:var age = 18;或dynamic age = 18;
- 变量名大小写敏感(age和Age是两个不同的变量)
- 变量默认值是null(js中变量默认值是undefined)
- Dart变量的值不会进行隐式转换(null不会自动转换为false)
常量
一旦声明,就不能更改
- 声明常量
- const age =18;
- final age = 18;
- const和final的区别
- const time = DateTime.now();//报错-无法将运行时的值分配给const变量
- final time = DateTime.now()//成功-可以将运行时的值分配给final变量
运行
命令行中运行
dart hello.dart
数据类型
Number
数字
- num 可以表示整数可以表示小数
- int 表示整数
- double 表示浮点数(既可以表示整数,也可以表示小数)
常用API
- toInt() 转成整型 向下取整
- round() 四舍五入
- toStringAsFixed(num) 四舍五入到指定小数点后位数
- remainder(num) 返回余数
- compareTo(num) 数字比较 0:相同 1:大于 -1:小于
String
- String 单引号 双引号都可以,三个引号可以声明包含换行符的字符串 常用API
+字符串拼接- split() 字符串分割
- trim() 字符串去前后空格
- isEmpty 判断字符串是否为空
- repalceAll() 字符串替换,支持正则替换 'd3fde344'.replaceAll(RegExp(r'\d+'),'_')
- contains() 是否包含
- indexOf() 查找字符位置
正则表达式
- RegExp(r'正则表达式')
Boolean
- bool 声明布尔类型
- 对变量进行判断时,要显式的检查布尔值,因为Dart中不会进行隐式转换
List
- 字面量方式声明
- List list = [] //不限定元素的数据类型
- List list = [] // 限定元素的数据类型时int
- 构造函数方式声明
- List list = new List.empty(growable:true) //不限制长度的空列表
- List list = new List.filled(3,0) //声明指定长度的填充列表
扩展操作符... var list = [1,2,3] var list2 = [0,...list]//[0,1,2,3] var l6; var l7 = [1,...?l6]//这样使用扩展运算符不会报错
常用API
- length 列表的长度
- reversed 列表翻转 ,反转后不是列表里
- toList() 转成List
- addAll() 添加多个元素
- remove() 删除元素
- removeAt() 根据下标删除元素
- insert() 在指定位置添加元素
- clear() 清空列表
- join() 合并元素,返回字符串
- 遍历
- for循环
- for...in
- forEach
- map 遍历并处理元素,生成新列表(数据类型不是列表,通过toList转成list)
- where 返回满足条件的数据
- any 只要有一项满足条件,就返回true
- every 每一项都满足条件返回true
- expand 二维数组转成一维
- fold 折叠 对列表中每一项元素做一个累计操作