简介

和所有的编程语言一样,dart有他内置的语言类型,这些内置类型都继承自Object,当然这些内置类型是dart语言的根底,只有把握了这些内置类型才可能在应用dart语言的时候得心应手。

明天就给大家解说一下dart语言的内置类型。

Null

在dart中用null来示意空。那么null和Null有什么关系呢?

Null是一个类,先看下Null的定义:

class Null {  factory Null._uninstantiable() {    throw UnsupportedError('class Null cannot be instantiated');  }  external int get hashCode;  /** Returns the string `"null"`. */  String toString() => "null";}

能够看到Null类型的string示意就是null。而相应的null是一个关键字,其对应的就是Null类。

数字

dart中的数字对应的类是num,他有两个子类,别离是int和double。

int示意不大于64 bits的整数。因为dart能够运行在不同的平台中,所以不同平台示意的范畴也是不同的。

在原生平台,比方android或者IOS平台,int的范畴能够达到 -2^63 到 2^63 - 1。 然而在web环境中,可示意的范畴是-2^53 到 2^53 - 1.

double相应的示意的是浮点类型。

对于数字来说,根本的运算操作符像是 +, -, / 和 *都是定义在num类中。当然还有其余一些惯例的操作符。

如果须要更加简单的运算,则能够应用dart:math库。

上面是几个数字应用的例子:

int age =18;int number= 20;double money = 10.1;

字符串

字符串是常常会应用的一种类型。dart中字符串对应的类是String。也能够间接用字面量示意如下:

var name ='jack';var site ="www.flydean.com";

字符串能够用单引号也能够用双引号来示意。dart中字符串应用的是UTF-16编码。

dart中的字符串中,还能够带上变量值,他的格局是 ${expression}.

var age=10;var words ='your age is ${age}!';

两个字符串能够用==来比拟是否相等,字符比拟的是对应的字符编码序列,如果字符编码序列相等,那么对应的字符串就相等。

字符串的连贯能够应用+。

var hello ="hello " + "word";

还有一种创立字符串的办法是应用三个单引号或者三个双引号。

var string1= '''this is a string!''';var string2 = """this is string again!""";

默认状况下string中的字符示意就是字符自身,如果要转换成其原始含意的话,则能够在字符串后面加上r:

var string3 =r'this is line one \n this is line two';

布尔值

布尔值在dart中用bool来示意。bool值只有两个字符串示意,别离是true和false。

因为dart是类型平安的,也就是说在须要应用bool类型的时候,不能用其余类型代替。

比方咱们要判断字符串是否为空,能够这样判断:

var name='';if(name.isEmpty){    do something}

列表

dart中的列表用List来示意,当然也能够间接应用上面的字面量示意:

var list = [1, 2, 3];

列表的index从0开始,以length-1完结。

从dart 2.3开始,引入了扩大符...和可为空的扩大符...? ,扩大符能够用将一个已知的list开展成其对应的元素,从而能够不便的构建list的组合:

var list = [1, 2, 3];var list2 = [0, ...list];

dart中提供一个很神奇的性能,就是能够在构建list的过程中应用if和for语句,来动静生成list中的元素:

var nav = [  'Home',  'Furniture',  'Plants',  if (promoActive) 'Outlet'];

或者:

var listOfInts = [1, 2, 3];var listOfStrings = [  '#0',  for (var i in listOfInts) '#$i'];

set和map

dart中的汇合用Set来示意。

set示意的是不反复的元素的汇合,如下所示:

var names = {'jack', 'mark', 'max'};

dart中的映射用Map来示意。

Map的创立和set很相似,然而蕴含了key和value:

var students = {'jack':18, 'mark':19, 'max':20};

大家能够发现,set和map是很相似的,那么问题来了, 怎么示意一个空的set或者map呢?

因为set中的元素是单个的,而map中的元素是键值对,所以咱们能够这样的示意:

var names = <String>{};var gifts = Map<String, String>();

然而如果不指定类型,那么默认创立的就是一个map:

var map = {};

要获取map中的值,能够这样应用:

var gifts = Map<String, String>();gifts['first'] = 'partridge';gifts['second'] = 'turtledoves';

map和set都反对扩大符...和可为空扩大符...? , 同样也反对汇合内的if和for操作。

本文已收录于 http://www.flydean.com/02-dart-buildin-type/

最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!

欢送关注我的公众号:「程序那些事」,懂技术,更懂你!