Dart 語言簡易教程(二)

Dart 語言簡易教程(一): http://www.reibang.com/p/8a62b1a2fd75

Dart 語言簡易教程(二)

內(nèi)建數(shù)據(jù)類型(Built-in types)

Dart 語言內(nèi)建了下面集中類型

  • numbers
  • strings
  • booleans
  • lists (also known as arrays)
  • maps
  • runes (for expressing Unicode characters in a string)
  • symbols

Number 類型

Dart 類型包括如下兩類

  • int
    取值范圍:-2^53 to 2^53

  • double
    64 位長度的浮點型數(shù)據(jù)茁瘦,符合IEEE 754 標準簇抵。

int 和 double 類型都是 num 類型的子類缩赛。
num 類型包括的操作包括: +, -, *, / 以及位移操作>>.
num 類型 有如下常用方法 abs(), ceil()和 floor()羔巢。完整的使用方法請參見:dart:math 包的使用說明猬仁。

int 類型不能包含小數(shù)點..

num類型操作例子:

// String -> int
var one = int.parse('1');
assert(one == 1);

// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);

// int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');

// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');

num 類型按位操作的例子:

assert((3 << 1) == 6);  // 0011 << 1 == 0110
assert((3 >> 1) == 1);  // 0011 >> 1 == 0001
assert((3 | 4)  == 7);  // 0011 | 0100 == 0111

Strings 類型

Dart 的String 是 UTF-16 編碼的一個隊列靶病。

Dart語言定義的例子:

var s1 = 'Single quotes work well for string literals.';
var s2 = "Double quotes work just as well.";
var s3 = 'It\'s easy to escape the string delimiter.';
var s4 = "It's even easier to use the other delimiter.";

String 類型可以使用 + 操作:

var s1 = 'String ' 'concatenation'
         " works even over line breaks.";
assert(s1 == 'String concatenation works even over '
             'line breaks.');

var s2 = 'The + operator '
         + 'works, as well.';
assert(s2 == 'The + operator works, as well.');

可以使用三個來定義多行的String 類型溃睹。
(這點和Python 語言類似震肮。)

var s1 = '''
You can create
multi-line strings like this one.
''';

var s2 = """This is also a
multi-line string.""";

可以使用r 來修飾String類型称龙,表 表明是“raw” 類型字符串:

var s = r"In a raw string, even \n isn't special.";

String 類型是 compile-time 的常量。
可以在編譯是才給String類型賦值戳晌。

// These work in a const string.
const aConstNum = 0;
const aConstBool = true;
const aConstString = 'a constant string';

// These do NOT work in a const string.
var aNum = 0;
var aBool = true;
var aString = 'a string';
const aConstList = const [1, 2, 3];

const validConstString = '$aConstNum $aConstBool $aConstString';
// const invalidConstString = '$aNum $aBool $aString $aConstList';

booleans 類型

Dart 的布爾類型名字是bool鲫尊,可能的取值包括”ture“ 和 ”false“。
”bool“ 類型是 compile-time 的常量沦偎。

Dart 是強bool 類型檢查疫向,只有bool 類型的值是”true“ 才被認為是true咳蔚。

var name = 'Bob';
if (name) {
  // Prints in JavaScript, not in Dart.
  print('You have a name!');
}

在production mode 中上面的代碼將不會輸出任何東西,因為name != true搔驼。
checked mode 中上面的代碼將會出現(xiàn)異常谈火,因為name不是bool 類型。

Lists 類型

在 Dart 語言中舌涨,具有一系列相同類型的數(shù)據(jù)被稱為 List 對象糯耍。
Dart List 對象類似JavaScript 語言的 array 對象。

定義list的例子:

var list = [1, 2, 3];

Dart list 對象的第一個元素的位置是0囊嘉,最后個元素的索引是list.lenght - 1温技。

var list = [1, 2, 3];
assert(list.length == 3);
assert(list[1] == 2);

list[1] = 1;
assert(list[1] == 1);

Maps 類型

Map 類型將keys 和 values 關聯(lián)在一起。
keys 和 values 可以是任意類型的對象扭粱。
像其它支持Map 的編程語言一樣舵鳞,Map 的 key 必須是唯一的。

Map 對象的定義:

var gifts = {
// Keys      Values
  'first' : 'partridge',
  'second': 'turtledoves',
  'fifth' : 'golden rings'
};

var nobleGases = {
// Keys  Values
  2 :   'helium',
  10:   'neon',
  18:   'argon',
};

也可以使用Map 對象的構造函數(shù) Map() 來創(chuàng)建Map 對象:

var gifts = new Map();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';

var nobleGases = new Map();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';

添加新的key-value 對:

var gifts = {'first': 'partridge'};
assert(gifts['first'] == 'partridge');

檢查key 是否在Map 對象中:

var gifts = {'first': 'partridge'};
assert(gifts['fifth'] == null);

使用.lenght 來獲取key-value 對的數(shù)量:

var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds';
assert(gifts.length == 2);

Runes 類型

Dart 中 runes 是UTF-32字符集的string 對象焊刹。
codeUnitAtcodeUnit 用來獲取UTF-16字符集的字符系任。
使用runes 來獲取UTF-32字符集的字符恳蹲。

main() {
  var clapping = '\u{1f44f}';
  print(clapping);
  print(clapping.codeUnits);
  print(clapping.runes.toList());

  Runes input = new Runes(
      '\u2665  \u{1f605}  \u{1f60e}  \u{1f47b}  \u{1f596}  \u{1f44d}');

上面例子的輸出結果是:


[55357, 56399]
[128079]
          

Symbols 類型

一般程序中不會使用Symbol類型虐块。
Symbol類型跟在#后面。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嘉蕾,一起剝皮案震驚了整個濱河市贺奠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌错忱,老刑警劉巖儡率,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異以清,居然都是意外死亡儿普,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門掷倔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眉孩,“玉大人,你說我怎么就攤上這事勒葱±送簦” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵凛虽,是天一觀的道長死遭。 經(jīng)常有香客問我,道長凯旋,這世上最難降的妖魔是什么呀潭? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任钉迷,我火速辦了婚禮,結果婚禮上钠署,老公的妹妹穿的比我還像新娘篷牌。我一直安慰自己,他們只是感情好踏幻,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布枷颊。 她就那樣靜靜地躺著,像睡著了一般该面。 火紅的嫁衣襯著肌膚如雪夭苗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天隔缀,我揣著相機與錄音题造,去河邊找鬼。 笑死猾瘸,一個胖子當著我的面吹牛界赔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牵触,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼淮悼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了揽思?” 一聲冷哼從身側響起袜腥,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钉汗,沒想到半個月后羹令,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡损痰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年福侈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卢未。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肪凛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尝丐,到底是詐尸還是另有隱情显拜,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布爹袁,位于F島的核電站远荠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏失息。R本人自食惡果不足惜譬淳,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一档址、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邻梆,春花似錦守伸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至剂娄,卻和暖如春蠢涝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阅懦。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工和二, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耳胎。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓惯吕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親怕午。 傳聞我的和親對象是個殘疾皇子废登,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容