Dart基礎 泛型和庫

2021-09-23 19:02:44 字數 3025 閱讀 6447

如果你看過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中的泛型

一.什麼是泛型 泛型是程式語言的一種特性。允許程式設計師在強型別程式語言中編寫 時定義一些可變部分,那些部分在使用前必須作出指明。從字面的意思理解來看,泛型,泛就是模糊 暫不確定暫定的意思。可以這樣理解,使用泛型就是定義的乙個型別,型別暫不確定,給使用給乙個佔位符給代替,在使用的時候可以給確定其定義...