zoukankan      html  css  js  c++  java
  • 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/

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

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

  • 相关阅读:
    网络嗅探与协议分析之验收题
    20199121《网络攻防实践》第四周作业
    如何设计一个卡方检验
    20199121《网络攻防实践》第三周作业
    openssl制作证书全过程及https实现
    Padding Oracle攻击解密AES
    virt-sysprep命令清理缓存文件时失败的解决方法
    OpenStack的centos镜像制作
    KVM--Host does not support any virtualization...
    Centos7 安装VNC实现远程桌面
  • 原文地址:https://www.cnblogs.com/flydean/p/15527290.html
Copyright © 2011-2022 走看看