最近在看dart了,本着“纸上得来终觉浅,绝知此事markdown”的原则,准备边学边写,写一个系列,这是第一篇。学习过程中主要是参考
A Tour of the Dart Language和A Tour of the Dart Libraries,外加自己的一些理解。内容上侧重于基础以及比较dart和js的异同。
工欲善其事,必先利其器,我们先来安装一下,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来声明变量/常量。为了找出它们之间的不同,我们来看一个例子。
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在重新赋值的时候可以赋不同类型的值。
接下来再谈谈final和const,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