这是Dart学习笔记的第二篇,主要记录变量、内置类型和函数的一些重要知识点。
变量
Dart的变量都是引用(reference),它们都指向一个对象。变量可以指定类型,也可以不指定(使用var)。不管任何类型的变量,只要没有对它进行初始化,它都将被赋予null。
如果某个变量的值不会被更改,请用final或者const来修饰它。Final与const的区别:被final修饰的变量只能被初始化一次,但其所指对象还可以被修改;而const表示当前变量是“编译时常量”,它所指的对象在创建后不能再修改。
示例如下:
内置类型
Dart的内置类型包括:number,string,boolean,list,map,symbol。内置类型的变量,都可以用字面量来初始化,或使用特有的构造函数来构造(如:Map)。
Number类型其实有两种:int(整形)跟double(双精度浮点数),它们都是num(数字)的子类型。
String(字符串)在Dart中是一串不可变的,以UTF-16编码的字符序列。一般使用单引号或双引号来创建字符串,也可以用+号来连接它们,还能使用字符串插值来避免过多的字符串连接操作。
Boolean类型在Dart里面是用bool表示,它有两个值:true跟false。需要注意的是,在JavaScript等语言中,非空字符串、非零数字等能被转换为true;而在Dart中,true就是true,其他任何值都视为false!
List类型,在其他语言中常被称为array(数组),是最常见最常用的一种集合类型,它提供了很多易用的方法来处理数组数据。
Map类型,可以看成是由键值对组成的对象,它的字面量表示方式以及操作方法都跟JavaScript的json对象类似。
Symbol类型比较特殊,日常编码很少用到它。它是一种标识符,它在Dart代码被最小化(minification)时不会被修改,它的表示方式就是在普通标识符前面加上一个#。
示例如下:
函数
Dart的函数是对象,跟变量一样,可以指定函数返回类型,也可以不指定。Dart的函数也支持两种形式的可选参数:可选命名参数跟可选位置参数。它还支持 => 简写方式,前提是函数的body只包含一个表达式(注意语句与表达式的区别)。
所有Dart应用都应该有一个顶层main函数,它用来作为程序执行的入口。Main函数的返回值是void,它的参数是可选的位置参数 ‘List<String>’。
Dart的函数是一等公民,它可以作为变量在代码间到处传递,也可以像JavaScript样通过嵌套来实现闭包。每一个函数都有返回值,如果没有显式的返回语句,则默认在函数body结束前添加 ‘return null;’。
示例如下:
操作符
Dart的操作符大部分跟JavaScript的是一样的,并且大部分是可以被重载(override)。
Dart也提供了一类特殊的操作符-类型检测操作符,它们是:as,is,is!。其中,as用来进行类型转换,is与is!用来判断对象的类型。
示例如下:
以上。