简介
和所有的编程语言一样,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/
最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!
欢送关注我的公众号:「程序那些事」,懂技术,更懂你!