dart系列之:dart語言中的內建型別

flydean發表於2021-11-09

簡介

和所有的程式語言一樣,dart有他內建的語言型別,這些內建型別都繼承自Object,當然這些內建型別是dart語言的基礎,只有掌握了這些內建型別才能夠在使用dart語言的時候得心應手。

今天就給大家講解一下dart語言的內建型別。

Null

在dart中用null來表示空。那麼null和Null有什麼關係呢?

Null是一個類,先看下Null的定義:

class Null {
  factory Null._uninstantiable() {
    throw UnsupportedError('class Null cannot be instantiated');
  }

  external int get hashCode;

  /** Returns the string `"null"`. */
  String toString() => "null";
}

可以看到Null型別的string表示就是null。而相應的null是一個關鍵字,其對應的就是Null類。

數字

dart中的數字對應的類是num,他有兩個子類,分別是int和double。

int表示不大於64 bits的整數。因為dart可以執行在不同的平臺中,所以不同平臺表示的範圍也是不同的。

在原生平臺,比如android或者IOS平臺,int的範圍可以達到 -2^63 到 2^63 - 1。 但是在web環境中,可表示的範圍是-2^53 到 2^53 - 1.

double相應的表示的是浮點型別。

對於數字來說,基本的運算操作符像是 +, -, / 和 *都是定義在num類中。當然還有其他一些常規的操作符。

如果需要更加複雜的運算,則可以使用dart:math庫。

下面是幾個數字使用的例子:

int age =18;
int number= 20;
double money = 10.1;

字串

字串是經常會使用的一種型別。dart中字串對應的類是String。也可以直接用字面量表示如下:

var name ='jack';
var site ="www.flydean.com";

字串可以用單引號也可以用雙引號來表示。dart中字串使用的是UTF-16編碼。

dart中的字串中,還可以帶上變數值,他的格式是 ${expression}.

var age=10;
var words ='your age is ${age}!';

兩個字串可以用==來比較是否相等,字元比較的是對應的字元編碼序列,如果字元編碼序列相等,那麼對應的字串就相等。

字串的連線可以使用+。

var hello ="hello " + "word";

還有一種建立字串的方法是使用三個單引號或者三個雙引號。

var string1= '''
this is a string!
''';

var string2 = """
this is string again!
""";

預設情況下string中的字元表示就是字元本身,如果要轉換成其原始含義的話,則可以在字串前面加上r:

var string3 =r'this is line one \n this is line two';

布林值

布林值在dart中用bool來表示。bool值只有兩個字串表示,分別是true和false。

因為dart是型別安全的,也就是說在需要使用bool型別的時候,不能用其他型別代替。

比如我們要判斷字串是否為空,可以這樣判斷:

var name='';
if(name.isEmpty){
    do something
}

列表

dart中的列表用List來表示,當然也可以直接使用下面的字面量表示:

var list = [1, 2, 3];

列表的index從0開始,以length-1結束。

從dart 2.3開始,引入了擴充套件符...和可為空的擴充套件符...? ,擴充套件符可以用將一個已知的list展開成其對應的元素,從而可以方便的構建list的組合:

var list = [1, 2, 3];
var list2 = [0, ...list];

dart中提供一個很神奇的功能,就是可以在構建list的過程中使用if和for語句,來動態生成list中的元素:

var nav = [
  'Home',
  'Furniture',
  'Plants',
  if (promoActive) 'Outlet'
];

或者:

var listOfInts = [1, 2, 3];
var listOfStrings = [
  '#0',
  for (var i in listOfInts) '#$i'
];

set和map

dart中的集合用Set來表示。

set表示的是不重複的元素的集合,如下所示:

var names = {'jack', 'mark', 'max'};

dart中的對映用Map來表示。

Map的建立和set很類似,但是包含了key和value:

var students = {'jack':18, 'mark':19, 'max':20};

大家可以發現,set和map是很類似的,那麼問題來了, 怎麼表示一個空的set或者map呢?

因為set中的元素是單個的,而map中的元素是鍵值對,所以我們可以這樣的表示:

var names = <String>{};
var gifts = Map<String, String>();

但是如果不指定型別,那麼預設建立的就是一個map:

var map = {};

要獲取map中的值,可以這樣使用:

var gifts = Map<String, String>();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';

map和set都支援擴充套件符...和可為空擴充套件符...? , 同樣也支援集合內的if和for操作。

本文已收錄於 http://www.flydean.com/02-dart-buildin-type/

最通俗的解讀,最深刻的乾貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

歡迎關注我的公眾號:「程式那些事」,懂技術,更懂你!

相關文章