dart之旅

Posted imgss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 中,可以使用 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
   

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



以上是关于dart之旅的主要内容,如果未能解决你的问题,请参考以下文章

dart之旅- 内建类型

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

Dart之旅

Dart之旅

Kotlin学习之旅解决错误:kotlin.NotImplementedError: An operation is not implemented: Not yet implemented(代码片段

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段