soragui
soragui 编程-学习-思考

Dart 语言学习笔记(一)

Dart 语言学习笔记(一)

为什么要学习Dart语言,很简单学以致用,既然Flutter SDK选择了Dart语言,那么就不得不学。接触Dart已有一段时间,才发现自己已经习惯使用这门奇怪的语言了,如果之前有过编程基础,我相信会很容易上手这门语言的。

首先Dart是一门很年轻,看起来也不是那么有前途的语言,不过我可管不了这个,至少我现在是需要它的,而且学习成本也不是很高。在官网看看Language Tour之后就对着项目一点一点学习,很快就能上手。所以这里就简单整理一下自己的学习的开始。

安装编译环境

如果你想运行Dart程序,可以使用官网给的DartPad学习基本语法,也可以下载Dart SDK。我也算是一个编程小白,我觉得Dart吸收了Java语言跨平台的特性,因为它是运行在Dart VM中的,就像Java有 Java SDK 一样,Dart SDK也具有相应的功能,而具体的语法、编译运行又有一点像是JavaScript语言。

我的系统是macOS,所以安装起来很简单:

1
2
$ brew tap dart-lang/dart
$ brew install dart

如果你还没有安装 brew ,可以在这里找到安装教程。我使用的IDE是VS Code,这个确实很强大,也很实用。

安装好后就可以测试了,首先新建一个文件main.dart,学下如下代码:

1
2
3
main() {
    print('Hello,Dart!');
}

然后,在终端直接输入如下命令:

1
dart main.dart

Hello,Dart! 是不是很简单。

基本数据类型

俗话说,程序就是数据+算法,使用一门语言首先要看的就是如何表示数据。不过,对于有一定编程经验的程序员来说,已经很熟悉了,无非就是一些字符、布尔、整型、浮点型还有字符串、类什么的。确实是这样,不过不同的语言也有他们不同的声明方法,下面就来看看在Dart中如何使用。

声明和初始化一个变量可以使用 vardynamic 或者特定类型的关键字:

1
2
3
4
var big = 34; // int 
var flo = 33.2; //double
var home = 'shanghai'; // string
var isNow = true ; // boolean
1
dynamic some = 'beijing'; // dynamic 

Dart是一种静态类型的语言,也就是说变量的类型在编译期间就已经确定了,比如使用 var 什么的变量,你给它第一次初始化的数据是什么类型,它就是什么类型,如果你换了类型会报错。用dynamic类型也是一样的,只不过它显示的就是dynamic类型。如果你没有给变量初始化,所有类型默认初始化都是为 null。

数值类型

数值类型只有 int 和 double 两种:

1
2
3
4
5
6
7
8
9
int age = 90; 
int address = 0x00011011;
double length = 34.09;
double exponents = 1.42e7;

int two = int.parse('2'); // 从字符串获取数值
double some = double.parse('45.902')

num time = 332.221;  // 使用 num 定义类型

字符串类型

Dart 字符串类型很自由,以至于用久了会在其他语言中使用字符串的时候造成一定的习惯性错误。你可以使用单引号或者双引号来表示一个字符串变量,也可以在字符串变量中使用${表达式},来插入一个字符串。

1
2
3
4
5
6
7
8
9
10
var so = 'Do on delay anything that adds languther and joy to your life';
var i = 'am';
var happy = "with flutter and dart";
var iamhappy = 'I $i happy $happy'; // I am happy with flutter and dart

var multiline = 'If you want to'
                'be happy set a goal that'
                'commands your thoughts,'
                'liberates your energy,and'
                'inspires your hopes.';

布尔类型

布尔类型就是 true 和 false 的类型,使用 bool 来定义,并且在条件判断的时候必须是布尔类型。

列表类型

列表就是数组,相同类型元素的集合:

1
var nums = [3,2,1,2,9];

或者如下方式声明,列表:

1
2
3
4
5
List<String> names = <String>[
    'Bob',
    'Clover',
    'Jobs',
]

Map 类型

Dart 种定义变量就是如此简单,以至于让我怀疑这样做真的很好嘛:

1
2
3
4
5
6
var result = {
    'name': 'Jobs',
    'age': 39,
    'title': 'Developer',
    'address': 'somewhere',
}

不过这也只是一点点,在实际中使用的还是泛型和集合。

Runes

Runes 类型用来输出Unicode形如 \uxxxx,xxxx表示16进制,如果你对\u多或者少于4位,那么就要使用{}包住了,如下所示可以输出emoji表情:

1
2
3
Runes input = new Runes(
      '\u{1f604}  \u{1f60F}  \u{1f47A}  \u{1f593}  \u{1f44C}');
  print(new String.fromCharCodes(input));

emoji

好了还有最后一个类型 Symbols,我也不知道这个类型是干嘛的,所以就不列出来了,有兴趣的可以自己去看看啊。

今天就到这里了明天继续学习。😇