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

40次阅读

共计 2348 个字符,预计需要花费 6 分钟才能阅读完成。

简介

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

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

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

正文完
 0