如果你看過api文件的基本型別陣列和列表,你會發現實際上所有都是泛型,使用泛型可以提高**的可讀性
var names = new list();
names.addall(['seth', 'kathy', 'lars']);
//檢查模式編譯失敗,生產模式編譯成功
names.add(42);
使用泛型的另乙個原因是減少**重複,泛型可以建立多型別共享的介面,同時還能在檢查模式早期預警,假如您建立乙個介面快取物件
abstract class objectcache
如果你想要的只是string的介面,你可以建立另乙個介面
abstract class stringcache
再如果,你想要乙個number的介面,是不是很麻煩,使用泛型型別可以節省您建立這些介面的麻煩
abstract class
cache
>
在上面**中,t是型別的替身,可以認為是開發人員自定義的型別的佔位符
字串型別的list和map可以引數化
var names = ['seth', 'kathy', 'lars'];
var pages = ;
指定乙個或多個型別使用乙個建構函式
var names = new list();
names.addall(['seth', 'kathy', 'lars']);
var nameset = new set.from(names);
下面的**建立了map、integer和key value
var views = new map();
dart的泛型型別需要具體化,這意味著泛型在執行時攜帶著型別資訊
var names = new
list
();names.addall(['seth', 'kathy', 'lars']);
print(names is list
);
import、part和library指令可以幫助您建立模組和共享**,庫不僅提供api,還是privacy許可權的單位:識別符號為下劃線( _ )是只有在包內可見的,每個dart應用程式都是乙個庫,即使它不使用庫的指令
使用 import 指定乙個命名空間從乙個庫中使用另乙個庫
import
'dart:html';
dart: 開頭的是dart內建的庫,其他的庫用 package: 開頭
import
'dart:io';
import
'package:mylib/mylib.dart';
import
'package:utils/utils.dart';
如果你匯入的兩個庫有衝突的識別符號,你可以為其中乙個或兩個庫都指定乙個字首
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
// ...
var element1 = new element();
var element2 = new lib2.element();
如果你只想要使用乙個庫的一部分,可以選擇性的匯入
//只匯入foo
import
'package:lib1/lib1.dart' show foo;
//匯入除了foo以外的所有
import
'package:lib2/lib2.dart' hide foo;
在必要的時候允許程式延遲載入乙個庫的需求,延遲載入庫,您必須使用 deferred as
import
'package:deferred/hello.dart' deferred as hello;
當你需要使用庫,使用 loadlibrary() 呼叫庫
greet() async
上面**中,await 關鍵字暫停執行直到載入庫,您可以多次使用loadlibrary(),庫只載入一次
使用 library identifier 指定庫的識別符號
library ballgame;
import 'dart:html';
//...
第乙個 ballgame.dart 宣告了ballgame庫和需要的ball.dart和util.dart
library ballgame;
import 'dart:html';
//...
part 'ball.dart';
part 'util.dart';
//...
第二個 ball.dart 實現ballgame的一部分
part of ballgame;
//...
第三個 util.dart 實現ballgame的其他部分
part of ballgame;
//...
您可以通過再結合或重新包裝庫的部分或全部
library french;
hello() =>
print('bonjour!');
goodbye() =>
print('au revoir!');
library togo;
import
'french.dart';
export
'french.dart' show hello;
import
'togo.dart';
void main()
Dart2基礎 九 泛型
目錄 為什麼使用泛型?用於集合型別 限制泛型引數型別 泛型 generics 使用 來定義。按照慣例,dart2中使用e t k和v宣告型別變數。比如 list等等。1.指定泛型型別,可以是 更安全,更易解讀 2.使用泛型還可以避免 重複。官網 abstract class objectcache ...
Dart 中泛型 泛型方法 泛型類 泛型介面
泛型就是解決類 介面 方法的復用性以及對不特定資料的支援 void main 定義乙個泛型方法 t printdata t value running dart users zhoujian dartdemo demo.dart 2zhoujian done exited with code 0 i...
Dart中的泛型
一.什麼是泛型 泛型是程式語言的一種特性。允許程式設計師在強型別程式語言中編寫 時定義一些可變部分,那些部分在使用前必須作出指明。從字面的意思理解來看,泛型,泛就是模糊 暫不確定暫定的意思。可以這樣理解,使用泛型就是定義的乙個型別,型別暫不確定,給使用給乙個佔位符給代替,在使用的時候可以給確定其定義...