写点什么

dart 系列之:dart 语言中的内置类型

发布于: 刚刚
dart系列之:dart语言中的内置类型

简介

和所有的编程语言一样,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/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

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

发布于: 刚刚阅读数: 2
用户头像

关注公众号:程序那些事,更多精彩等着你! 2020.06.07 加入

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧,尽在公众号:程序那些事!

评论

发布
暂无评论
dart系列之:dart语言中的内置类型