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