学习怎样配置Dart开发环境,变量声明、数据类型、函数、运算符、控制流程语法

2023年 7月 13日 51.3k 0

学习了怎样配置Dart的开发环境,对变量声明、数据类型、函数、运算符、控制流程语法进行说明,为更深入学习Dart或者Flutter打下基础。

什么是Dart语言

Dart语言是谷歌公司在2011年推出的新的计算机语言。Dart可以应用于web、服务器、移动应用和物联网等领域的开发。Dart的终极目标是取代JavaScript。Dart设计完全脱离JavaScript,因此它没有向后兼容JavaScript。Dart语言的发展始终一直都是不温不火。

为什么要用Dart

Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。Flutter选择了Dart作为开发语言,因此想学习Flutter就必须先学习好Dart。

环境搭建

下载和安装Dart

可以从官网下载到最新版本的Dart。

学习怎样配置Dart开发环境,变量声明、数据类型、函数、运算符、控制流程语法

双击下载到的exe文件,依照向导指示完成Dart的安装。

安装验证

  • window键+r打开运行窗口

  • 在运行窗口的打开输入框输入cmd,然后点击确定

    学习怎样配置Dart开发环境,变量声明、数据类型、函数、运算符、控制流程语法

  • 在命令行界面输入命令并按回车

  • dart --version

    学习怎样配置Dart开发环境,变量声明、数据类型、函数、运算符、控制流程语法

    安装Visual Studio Code

    很多常见的IDE都有Dart的插件可以使用,这里推荐使用Visual Studio Code加插件进行Dart开发。可以在官网下载到Visual Studio Code,安装完成后可以开始添加插件。

    安装Dart插件

    学习怎样配置Dart开发环境,变量声明、数据类型、函数、运算符、控制流程语法

    安装Code Runner插件

    学习怎样配置Dart开发环境,变量声明、数据类型、函数、运算符、控制流程语法

    helloworld

  • 在VSC新建文件

  • 输入以下代码

  • void main(){
        print('hello world');
    }
  • 在文件上按鼠标右键,选择点击Run Code运行 学习怎样配置Dart开发环境,变量声明、数据类型、函数、运算符、控制流程语法

  • 运行结果 学习怎样配置Dart开发环境,变量声明、数据类型、函数、运算符、控制流程语法

  • 变量声明

    var

    使用方式与JavaScript的var一致,可以接收任意类型的值。不同的地方是,Dart是强类型语言,赋值以后类型就确定下来,不能再更改为其它类型。

    var name;
    name = 'zhangsan';
    // 下面的代码在dart中会报错,原因是变量name类型已经确定为String
    // 类型一旦确定就不能再更改.
    name = 100;

    final和const

    final和const类似都可以定义一个常量。它们的区别是const在声明必须赋值,而final可以先预声明需要使用时再赋值。

    // const和final在声明字面量时作用是一致的
    const PI = 3.14159;
    final PI2 = 3.14159;
    // 以下代码会报错,原因是常量赋值后就不能再做修改
    // PI = 3.1415926535;
    
    final now  = new DateTime().now();
    // 以下代码在dart中会报错,const在编译时就必要赋值,而new DateTime().now()
    // 在运行才能产生具体的
    // const now2 = new DateTime().now();

    数据类型

    Dart内置节以下几种数据类型

    • String

    • Number

    • Boolean

    • List(Dart没有数组,类似于数组的作用)

    • Map

    • Runes(UTF-32字符集的字符)

    • Symbols

    通过一段代码来演示以上的数据类型

    void main(){
    // Number
        int a = 1;
        double b = 0.1;
    
    // String
        var s1 = 'this is a string';
        String s2 = "this is another string";
    
    // boolean
        var flag = true;
        bool flag2 = false;
    
    // List
        List list = [1, 2, 3, 4, 5];
        List list2 = ['zhang', 'san', "123", "456"];
        List list3 = [1, true, 'haha', ];
    
    // Map
        Map person = new Map();
        map['name'] = 'zhangsan';
        map['age'] = 22;
    
    // Dart使用runes来获取UTF-32字符集的字符。String的codeUnitAt and codeUnit属性可以获取UTF-16字符集的字符
        var clapping = 'u{1f44f}';
        print(clapping); // 打印的是拍手emoji的表情
    
    // symbols
        print(#s == new Symbol("s")); // true
    }

    函数

    函数的返回值

    Dart是面向对象的编程语言,所以函数也是一个对象,还有一种类型Function,也就是说函数可以赋值给某个变量或者作为参数传给另外的函数。Dart建议给函数添加上返回类型,但是不加返回类型的函数同样可以正常工作,另外还可以用lamda表达式,比如下面的代码:

    // 声明返回类型
    int add(int a, int b) {
        return a + b;
    }
    
    // 不声明返回类型
    add2(int a, int b) {
        return a + b;
    }
    
    // =>是return语句的简写
    add3(a, b) => a + b;
    
    main() {
        print(add(1, 2)); // 3
        print(add2(2, 3)); // 5
        print(add3(1, 2)); // 3
    }

    命名参数、位置参数、参数默认值

    命名参数

    使用花括号将函数的参数括起来就是定义了命名参数,如下面的代码所示:

    sayHi({String name}) {
        print("hello, my name is $name");
    }
    
    sayHi2({name: String}) {
        print("hello, my name is $name");
    }
    
    main() {
    // 打印 hello, my name is zhangsan
        sayHi(name: 'zhangsan');
    
    // 打印 hello, my name is wangwu
        sayHi2(name: 'wangwu');
    }

    从上面代码可以看到,命名参数时可以使用{type paramName}或者{paramName: type}两种方式声明参数,而调用命名参数时,需要以funcName(paramName: paramValue)的形式调用。

    命名参数的参数并不是必须的,所以上面的代码中,如果调用sayHi()不带任何参数,也是可以的,只不过最后打印出来的结果是:hello, my name is null。

    位置参数

    使用中括号[]括起来的参数是函数的位置参数,代表该参数可传可不传,位置参数只能放在函数的参数列表的最后面,如下代码所示:

    sayHello(String name, int age, [String hobby]) { // 位置参数可以有多个,比如[String a, int b]
        var msg = "hello, this is $name and I am $age years old";
        if (hobby != null) {
            msg = "$msg, my hobby is $hobby");
        }
        print(msg);
    }
    
    main() {
    // hello, this is zhangsan and I am 20 years old
        sayHello("zhangsan", 20);
    // hello, this is zhangsan and I am 20 years old, my hobby is play tv game
        sayHello("zhangsan", 20, "play tv game");
    }

    参数默认值

    可以为命名参数或者位置参数设置默认值,如下代码所示:

    // 命名参数的默认值 int add({int a, int b = 3}) {     return a + b; } // 位置参数的默认值 int sum(int a, int b, [int c = 3]) {     return a + b + c; }

    main()函数

    不论在Dart还是Flutter中,必须都需要一个顶层的main()函数,它是整个应用的入口函数,main()函数的返回值是void,还有一个可选的参数,参数类型是List。

    匿名函数

    大多数函数都是有名称的,比如main() hello()等,但是也可以写匿名函数,如果对JavaScript比较熟悉,看到下面的肯定也不会陌生:

    test(Function callback) {   callback("hello"); } main() {   test((param) {     // 打印hello     print(param);   }); }

    匿名函数类似于Java中的接口,往往在某个函数的参数为函数时使用到。

    函数返回值

    所有的函数都有返回值,如果没有指定return语句,那么该函数的返回值为null。

    运算符

    Dart中的运算符与JavaScript中的类似,比如++a、a == b、b ? a : b,但是也有一些与JavaScript不太一样的运算符,下面用代码说明:

    main() {     // 与JavaScript相同的运算符操作     int a = 1;     ++a;     a++;     var b = 1;     print(a == b);  // false     print(a * b); // 3     bool real = false;     real ? print('real') : print('not real'); // not real     print(real && a == b); // false     print(real || a == 3); // true     print(a != 2); // true     print(a  print(item));     // while语句     int start = 1;     int sum = 0;     while (start

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论