zoukankan      html  css  js  c++  java
  • dart之旅(一)

    前言

    最近在看 dart 了,本着 “纸上得来终觉浅,绝知此事 markdown” 的原则,准备边学边写,写一个系列,这是第一篇。学习过程中主要是参考
    A Tour of the Dart Language
    A Tour of the Dart Libraries, 外加自己的一些理解。内容上侧重于基础以及比较 dart 和 js 的异同。

    安装 sdk

    工欲善其事,必先利其器,我们先来安装一下,dart 的 sdk,只有这样,我们写的 dart 代码才能跑起来。安装 sdk 可以参考搬砖老程的 这篇博客,写的可以说是很详细了。

    安装完成之后,在命令行终端输入 dart,如果输出 dart 相关命令的解释,那就表示我们的环境安装成功。接下来我们先记住一个命令 dart xxx.dart 就可以执行 dart 文件了。以下面这段 dart 代码为例:

    
    // Define a function.
    printInteger(int aNumber) {
      print('The number is $aNumber.'); // Print to console.
    }
    
    // This is where the app starts executing.
    main() {
      var number = 42; // Declare and initialize a variable.
      printInteger(number); // Call a function.
    }
    

    将上面的这段代码保存为 main.dart,在终端输入 dart main.dart,我们就将第一个 dart 程序跑了起来。

    dart 中的一些重要的概念

    以下部分翻译自 https://www.dartlang.org/guides/language/language-tour#important-concepts

    当您在了解 Dart 语言时,请记住以下事实和概念:

    可以在变量中引用的所有内容都是一个对象,每个对象都是一个类的实例。number,函数和 null 都是对象。所有对象都从 Object 类继承。

    尽管 Dart 是强类型的,但类型声明是可选的,因为 Dart 可以推断类型。在上面的代码中,数字被推断为 int 类型。如果要明确说明不需要任何类型,请使用特殊类型 dynamic。

    Dart 支持泛型类型,如 List (整数列表)或 List (任何类型的对象列表)。

    Dart 支持顶级函数(例如 main()),以及绑定到类或对象的函数(分别是静态和实例方法)。您还可以在函数内创建函数(嵌套函数或本地函数)。

    类似地,Dart 支持顶级变量,以及绑定到类或对象的变量(静态和实例变量)。实例下的变量有时称为字段或属性。

    与 Java 不同,Dart 没有关键字 public,protected 和 private。如果标识符以下划线(_)开头,则它对其库是私有的。

    标识符可以以字母或下划线(_)开头,后跟这些字符加数字的任意组合。

    Dart 有表达式(执行时会产生值)和语句(执行时不会产生值)。例如,条件表达式条件? expr1:expr2 的值为 expr1 或 expr2。将其与 if-else 语句进行比较,该语句没有产生任何值。语句通常包含一个或多个表达式,但表达式不能直接包含语句。

    Dart 工具可以报告两种问题:警告和错误。警告只是表明您的代码可能无法正常工作,但它们不会阻止您的程序执行。错误可以是编译时或运行时。编译时错误会阻止代码执行; 运行时错误导致代码执行时引发异常。

    变量

    在 dart 中,可以使用 var, dynamic, const, final 来声明变量 / 常量。为了找出它们之间的不同,首先来看一个关于 var 和 dynamic 差别的例子。

    
    main(List<String> args) {
      // var
      var d = "111"; 
      // String d ='111'; 等价于显式声明 d 的类型并赋值
      // d = 2; // 不能再赋不同类型的值
      print(d);
    
      // dynamic
      dynamic c = 'sss';
      c = 3; // 可以赋值不同类型的值
      print(c);
    }
    
    

    从上面的例子可以看出,dart 具有类型推断机制,当使用 var 声明一个变量时,这个变量自动被定义成所赋值的类型,之后重新赋值时,只能对这个变量赋 ** 同类型 ** 的值。
    而 dynamic 在重新赋值的时候可以赋不同类型的值。

    接下来再谈谈 finalconst,final 和 const 都只能被赋值一次,但是两者还是有如下区别:

    • 1️⃣const 可以作用在值上, 当 const 作用在值上时,值不可修改,如果对应的变量没有用 const 或者 final 声明,变量可以重新赋值
    • 2️⃣使用 const 声明的对象,之后不能再进行操作 (unmodifiable), 而 final 声明的是可以的。参考下面的代码:
    
       final name = 5;
       final name1 = const 5;
       var name2 = const {};
       const ax = 6;
       
       const x = [];
       x.add(6); // Cannot add to an unmodifiable list
       
       final y = [];
       y.add(9); // ok
       
       const x1 = {}; 
       obj['x1'] = 5; //Cannot set value in unmodifiable Map
       
       final y1 = {};
       obj['y1'] = 5; //ok
       
    
    

    新手开车,如有错误还请指出。未完待续

  • 相关阅读:
    java 学习之环境配置
    报表设计--分组报表-普通分组-纵向扩展
    报表设计--网格式报表
    报表设计--简单报表
    SDP平台操作视频
    页面设计--Tree目录树
    页面设计--Grid列表
    页面设计--RadioButton
    页面设计--CheckBoxList
    页面设计--TextBox
  • 原文地址:https://www.cnblogs.com/imgss/p/10041721.html
Copyright © 2011-2022 走看看