Dart学习之旅(二):变量和数据类型

113 阅读5分钟

在学习Dart语言之前,我们需要先熟悉一些基础的语法,包括变量的声明和使用,以及对Dart中基础数据类型的了解。

如果你有了解typescript,那么对于本文你将能很快理解


运行环境插件的安装

  • 学习变量和数据类型之前,我们需要一个运行环境,上一篇文章教大家安装了Dart SDK,相信各位都已经安装成功了,但是想要编译运行实时预览我们的Dart代码,还需要一个代码编辑器和Dart插件,和一个代码运行器。

  • 可以使用VsCode,WebStorm,IntelliJ IDEA,Atom,等,笔者使用的事VsCode,下面就介绍下VsCode的运行环境配置。

  • vscode下载地址:code.visualstudio.com/

  • 首先,打开vscode插件安装模块,搜索Dart 正常第一个就是,点击安装

    image-20230805175901993

  • 在安装一个代码运行器 搜索 code Runner ,同样点击安装

    image-20230805180153759

  • 现在运行环境就全部搭建完成了,接下来我们创建一个文件运行试试,

  • dart 文件后缀名是.dart,创建一个test.dart文件,然后使用vscode打开,复制如下代码到文件内并保存

  • 需要说明的是,在Dart中,每个应用都有一个顶层的 main() 函数来作为运行入口。没有指定返回类型的方法的返回类型会推导为 void。你可以使用顶层函数 print() 来将一段文本输出显示到控制台。

    void main() {
      print('Hello, World!');
    }
    ​
    
  • 然后鼠标右键单击找到 Run Code ,点击运行,即可在控制台查看到打印结果

    image-20230805180936207

  • 至此,运行环境就已经全部搭建完成了,可以开始进入我们今天的主题啦。

变量和声明方式

  • 变量,是我们在编程中操控数据的基本单位。在Dart中,有多种方式来声明和使用变量。

    • 使用var来声明变量
    var name = 'uli' ;  //Dart 会自动推断出变量的数据类型,在本例中,会自动推断出 `name`是`string`类型
    
    • 也可以在声明变量的时候明确指定变量的类型,这样可以使得代码更容易理解,并且能够让Dart在编译时检查到类型错误
    String name = 'hi-uli' ;
    
  • Dart 2.12版本引入了空安全特性,空安全可防止因无意访问设置为 的变量而导致的错误null。该错误称为空解除引用错误。当您访问属性或对计算结果为 的表达式调用方法时,会发生空取消引用错误null。此规则的一个例外是当null支持属性或方法时,例如toString()hashCode。通过 null 安全性,Dart 编译器可以在编译时检测到这些潜在错误。

    • 如果变量可能会是空值,需要类型声明后面添加一个问号?来开启变量可为空值
    String? nullFirstName = null ;
    
  • 默认值

    • 具有可为 null 类型的未初始化变量的初始值为null。即使是数字类型的变量最初也是 null,因为数字(与 Dart 中的其他所有内容一样)都是对象。
    • 所以基于null安全性,必须在使用不可为 null 的变量之前初始化它们的值:
    int LineCount = 0; //int 会在后面数据类型解释
    
  • 如果一个变量在初始化后值不在改变,推荐使用finalconst来代替var声明变量。

    final Name = 'uli'; //or
    final String Wechat = 'hai-uli';
    ​
    const pi = 3.1415926;//or
    const Number Angle = 90;
    
    • 重要:finalconst的是有区别的,final声明的变量只能被设置一次,而cosnt声明的变量是编译时常量。 (常量变量是隐式最终变量)

基础数据类型

Dart 是一个强类型语言,包含了许多常见的数据类型,见下文:

Numbers(int,double)

  • int

    • 整数值不大于 64 位, 具体取决于语言环境。在Dart上,值的范围可以是 -2 63到 2 63 - 1。在 Web 上,整数值表示为 JavaScript 数字(没有小数部分的 64 位浮点值),并且可以是从 -2 53到 2 53 - 1.
    int age = 18;
    
  • double

    • 64 位(双精度)浮点数,由 IEEE 754 标准指定。
    double score = 98.5;
    

Strings

  • 表示文本的数据类型,保存一系列 UTF-16 代码单元,可以使用单引号或双引号来创建字符串

    String Hello = 'Hello';//or
    String Name = "uli";
    

Booleans

  • 包含truefalse两种布尔值.

    bool IsFalse = false;
    bool IsTrue = true;
    

Lists

  • 一个有序的列表集合,在大多数语言中都被成为数组。

    List<int> list = [1, 2, 3];
    

maps

  • 无序的键值对组合,在js中这种被称为对象。

    Map<String, String> countries = {
      'CN': 'China',
      'US': 'United States',
      'JP': 'Japan'
    };
    

sets

  • 集合,无序,不可重复。常用于过滤重复数据.

    void main() {
      Set<String> mySet = {'apple', 'banana', 'orange', 'apple', 'banana'};
      print(mySet);
    }
    
    //>>>输出
    //  {apple, banana, orange}
    

Runes

  • Runes 是用于表示Unicode代码点的一种数据类型。Unicode代码点是指给定字符在Unicode字符集中的唯一整数值。Dart使用Runes来处理字符串中的Unicode字符,尤其是那些无法用单个UTF-16代码单元表示的字符(比如一些辅助平面字符).

    void main() {
      // 使用Runes创建包含特殊Unicode字符的字符串
      Runes specialString = Runes('\u2665 Hello \u{1F60D} World \u{1F984}');
      
      // 将Runes转换为字符串
      String convertedString = String.fromCharCodes(specialString);
      print('Converted String: $convertedString');
    }
    
    //打印结果
    //Converted String: ♥ Hello 😍 World 🦄
    

Records(支持的最低版本>3.0)


最后

学习Dart语言的最重要基础就是理解变量的声明和数据类型,掌握这些基础知识后,后面就可以开始尝试编写稍微复杂一点的Dart程序了

其实,不单单是学习Dart语言的最重要基础是理解变量声明和数据类型,学习其他编程语言也是如此