初探Dart - 基本类型

Google 最近发布了其通用App框架 flutter,而flutter则是用dart进行编程。所以想要进军flutter编程,dart是不可绕过的坎。

基本类型

Dart语言在一定意义上是强类型语言,实践中应该尽量进行实际的类型声明而不是使用var

数字类型

整数和小数都是数字类型,他们支持很多相同的方法和运算符。

2 + 2;     // 4
2.2 + 2;   // 4.2
2.2 + 2.2; // 4.4

字符串类型

和大部分语言一样,Dart的字符串也是不可变的。通俗地说,字符串的操作会产生新的字符串而不是修改现有的字符串。

var str1 = "foo";
var str2 = str1;
str1.hashCode == str2.hashCode; // true

模板插值

在字符串中使用$表明这是一个插值。

var sth = "foo";
"$sth, bar";   // "foo, bar"

或者

var sth = "foo";
"${sth}, bar"; // "foo, bar"

布尔类型

在dart中,布尔类型的值只能为truefalse。在Dart中,不会将null""视为false


var name, greeting;
greeting = name ? "$name" : "Hello";            // "Hello"

name = "Bob";
greeting = name ? "$name" : "Hello";            // "Hello"

greeting = (name != null) ? "$name" : "Hello";  // "Bob"

HashMap

与js类似:

var prices = {
    'apple': 1,
    'pear': 2
};
prices['apple']; // 1

List

声明与py类似。

var fruits = ['apple', 'pear', 'peach', 'banana']
fruits[0]; // "apple"
fruits.length; // 2

fruits.setRange(1, 2, ['cherry', 'melon']); 
// fruits = ['apple', 'cherry', 'melon', 'banana']

fruits.removeRange(1, 2); 
// fruits = ['apple', 'banana']

fruits.addAll(['cherry', 'melon']); 
// fruits = ['apple', 'banana', 'cherry', 'melon']

一些内建的迭代方法:

fruits.some((fruit) => fruit.startsWith('c'));   // true
fruits.every((fruit) => fruit.startsWith('c'));  // false
fruits.filter((fruit) => fruit.startsWith('c')); // ['cherry']

Collection

Set

var fruitsSet = new Set.fron(fruits);

fruitsSet.add('cherry'); 
// ['apple', 'banana', 'cherry', 'melon']
fruitsSet.add('berry');
// ['apple', 'banana', 'cherry', 'melon', 'berry']


### Queue
``` dart
var fruitsQueue = new Queue.from(fruits);
fruitsQueue.addFirst('berry');
// ['berry', 'apple', 'banana', 'cherry', 'melon']
fruitsQueue.removeFirst();
// ['apple', 'banana', 'cherry', 'melon']
fruitsQueue.removeLast();
// ['apple', 'banana', 'cherry']

Date

var date = new Date.fromString('2018-12-13 14:43:12')
// 2018-12-13 14:43:12.000

var now = new Date.now();
// ……

var tmp = new Date(2018, 12, 12, 14, 43, 12, 0);
// 2018-12-13 14:43:12.000

日期操作相当好用

var diff = date.diff(tmp);
diff.inDays; // 1

date.add(new Duration(days: 1)); 
// 2018-12-14 14:43:12.000
评论区

Gitalking ...

Markdown is supported

Be the first guy leaving a comment!