美文网首页Dart
什么是Dart语言?如何快速掌握Dart语言入门?

什么是Dart语言?如何快速掌握Dart语言入门?

作者: 源码时代官方 | 来源:发表于2019-03-22 13:46 被阅读61次
    image

    一、Dart语言介绍

    Dart语言是由谷歌公司开发的网络编程语言,于2011年10月10日发布。有了Dart,你可用的网页脚本将不只是Java专属.在使用Chromium的浏览器中,你可以直接运行Dart程序,而且有可靠的虚拟机帮助你提升程序性能和安全性.

    即使你的浏览器不支持Dart语言,Dart也可以被转换为Java代码,也不必再担心兼容上的问题.

    同时,Dart还可以用来编写桌面应用程序,这很像Java的Node.js。

    二、Dart语言入门

    Flutter使用dart语言来进行开发,dart官方也提供了在线编译器来学习dart语言语法

    image

    2.1 程序入口 main函数

    // 这是dart程序执行的入口。

    main() {

    var number = 42; // 定义并初始化一个变量。

    printNumber(number); // 调用一个方法。

    }

    在dart应用里,main函数表示程序的执行入口,执行一个dart应用,就会调用文件的main函数进行启动。

    2.2 变量

    main() {

    var a = 'a';

    int b = 10;

    String s = "hello";

    }

    你可以明确指定某个变量的类型,如int bool String,也可以用var或 dynamic来声明一个变量,Dart会自动推断其数据类型。

    Dart有如下几种内建的数据类型:

    1、numbers 数字

    2、strings 字符串

    3、booleans 布尔

    4、lists(或者是arrays) 数组

    5、Maps

    6、runes(UTF-32字符集的字符)

    7、Symbols

    下面用代码说明:

    main() {

    // numbers

    var a = 0;

    int b = 1; //整数

    double c = 0.1; //浮点数

    // strings

    var s1 = 'hello';

    String s2 = "world";

    // booleans

    var real = true;

    bool isReal = false;

    // lists

    var arr = [1, 2, 3, 4, 5];

    List<String> arr2 = ['hello', 'world', "123", "456"]; //String的数组

    List<dynamic> arr3 = [1, true, 'haha', 1.0]; //自动推断数据类型

    // maps

    var map = new Map();

    map['name'] = 'zhangsan';

    map['age'] = 10;

    Map m = new Map();

    m['a'] = 'a';

    //runes,Dart 中 使用runes 来获取UTF-32字符集的字符。String的 codeUnitAt and codeUnit属性可以获取UTF-16字符集的字符

    var clapping = '\u{1f44f}';

    print(clapping); // 打印的是拍手emoji的表情

    // symbols

    print(#s == new Symbol("s")); // true

    }

    注意:没有赋初值的变量都会有默认为null

    2.3 函数

    Dart 的函数支持函数声明、函数字面量、箭头函数、函数表达式、匿名函数。

    int add(int a, int b) {

    return a + b;

    }

    // 类型可省略

    add(a, b) {

    return a + b;

    }

    // 箭头函数

    var add = (a, b) => a + b;

    int add(int a, int b) => a + b;

    // 可选参数,使用 [] 限定

    int add(int a, int b, [int c = 1, int d = 2]) => a + b + c + d;

    // 显示指定参数名称,默认参数

    int add({ int a = 1, int b = 2 }) {

    return a + b;

    }

    add(a: 1, b: 2);

    2.3 操作符

    操作符包括了:expr++、expr--、()、[]、.、?、等,基本和 ES6 一致,除了没有 === 的判断。

    例外有三个特色的操作:is、as、is?。

    // is运算符用于判断一个变量是不是某个类型的数据

    // is!则是判断变量不是某个类型的数据

    var s = "hello";

    print(s is String); // true

    var num = 6;

    print(num is! String); // true

    // ~/才是取整运算符,如果使用/则是除法运算,不取整

    int k = 1;

    int j = 2;

    print(k / j); // 0.5

    print(k ~/ j); // 0

    // as运算符类似于Java中的cast操作,将一个对象强制类型转换

    (emp as Person).teach();

    // ??=运算符 如果 ??= 运算符前面的变量为null,则赋值,否则不赋值

    var param1 = "hello", param2 = null;

    param1 ??= "world";

    param2 ??= "world";

    print("param1 = $param1"); // param1 = hello

    print("param2 = $param2"); // param2 = world

    // ?.运算符

    var str1 = "hello world";

    var str2 = null;

    print(str1?.length); // 11

    print(str2?.length); // null

    print(str2.length); // 报错

    2.4 控制流程

    Dart 的控制流程支持:if、 if-else、 for、 while、 do-while、 switch、try-catch-finally

    if (isRaining()) {

    // ...

    } else if (isSnowing()) {

    // ...

    } else {

    // ...

    }

    var message = new StringBuffer('Dart is fun');

    for (var i = 0; i < 5; i++) {

    message.write('!');

    }

    var collection = [0, 1, 2];

    for (var x in collection) {

    print(x); // 0 1 2

    }

    2.5 类(Class)

    类的定义与构造方法

    Dart中的类没有访问控制,所以你不需要用private, protected, public等修饰成员变量或成员函数,一个简单的类如下代码所示:

    class Person {

    String name;

    int age;

    String gender;

    Person(this.name, this.age, this.gender);

    sayHello() {

    print("hello, this is name, I amage years old, I am a $gender");

    }

    }

    上面的Person类中有3个成员变量,一个构造方法和一个成员方法,看起来比较奇怪的是Person的构造方法,里面传入的3个参数都是this.xxx,而且没有大括号{}包裹的方法体,这种语法是Dart比较独特而简洁的构造方法声明方式,它等同于下面的代码:

    Person(String name, int age, String gender) {

    this.name = name;

    this.age = age;

    this.gender = gender;

    }

    要调用Person类的成员变量或成员方法,可以用下面的代码:

    var p = new Person("zhangsan", 20, "male");

    p.sayHello();

    p.age = 50;

    p.gender = "female";

    p.sayHello();

    Dart 中的实现接口类

    class Impostor implements Person {

    get _name => '';

    String greet(String who) => 'Hi $who. Do you know who I am?';

    }

    2.6 模块

    Dart 的模块导入。

    // 全部导入,并且是全局变量

    import 'dart:math';

    max(1, 2);

    // 别名

    import 'dart:math' as math;

    math.max(1, 2);

    // 只导入部分

    import 'dart:math' show min;

    min(1, 2);

    // 懒加载,类似 ES6 的 import()

    import 'dart:math' deferred as math;

    Future greet() async {

    await math.max(1, 2);

    }

    2.7 异步

    在 ES6 与异步相关的就是 Promise、async、await。而在 Dart 则是 Future、async、await。

    使用 async/await 之前需要引入 dart:async 模块。

    import 'dart:async';

    Future<String> lookUpVersion() async => '1.0.0';

    Future main() async {

    await for (var request in requestServer) {

    handleRequest(request);

    }

    }

    2.8 正则表达式

    正则使用的是 RegExp 对象。

    RegExp exp = new RegExp(r"(\w+)");

    // 返回正则表达式匹配项的可迭代对象

    exp.allMatches("abc def ghi");

    // 搜索并返回第一个匹配项,没有则返回null

    exp.firstMatch("");

    // 正则表达式是否找到匹配项

    exp.hasMatch("as");

    // 从第几个字符开始匹配正则表达式

    exp.matchAsPrefix("ab cd", 3);

    // 返回正则表达式的第一个匹配字符串

    exp.stringMatch("abc de");

    // 返回正则表达式的字符串表示

    exp.toString();

    作者:源码时代

    本文版权归源码时代所有,转载请注明出处,如果您觉得有用欢迎点赞留言,更多开发技术学习资料查看源码时代主页。

    相关文章

      网友评论

        本文标题:什么是Dart语言?如何快速掌握Dart语言入门?

        本文链接:https://www.haomeiwen.com/subject/ulblvqtx.html