Dart语言学习(一)

317 阅读4分钟

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

谷歌公司开发的,类型安全的面向对象的编程语言,被应用于web,服务器,移动应用和物联网等领域 Dart是强类型的语言 运行方式:

  • 原生虚拟机
  • JavaScript引擎(Dart代码可以转成js代码,然后运行在浏览器上)

Dart和js对比

DartJavaScript
FlutterReact
第三方包pub.devnpmjs.com
包管理命令PubNpm
有用网站官网:
英文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 折叠 对列表中每一项元素做一个累计操作