Programmazione Dart - Librerie
Una libreria in un linguaggio di programmazione rappresenta una raccolta di routine (insieme di istruzioni di programmazione). Dart dispone di una serie di librerie integrate utili per memorizzare le routine utilizzate di frequente. Una libreria Dart comprende un insieme di classi, costanti, funzioni, typedef, proprietà ed eccezioni.
Importazione di una libreria
L'importazione rende i componenti in una libreria disponibili per il codice chiamante. La parola chiave import viene utilizzata per ottenere lo stesso risultato. Un file dart può avere più istruzioni di importazione.
Gli URI della libreria Dart incorporati utilizzano lo schema dart: per fare riferimento a una libreria. Altre librerie possono utilizzare un percorso del file system o lo schema package: per specificarne l'URI. Le librerie fornite da un gestore di pacchetti come lo strumento pub utilizzano il pacchetto: schema .
La sintassi per importare una libreria in Dart è fornita di seguito:
import 'URI'
Considera il seguente frammento di codice:
import 'dart:io'
import 'package:lib1/libfile.dart'
Se desideri utilizzare solo una parte di una libreria, puoi importare selettivamente la libreria. La sintassi per lo stesso è data di seguito:
import 'package: lib1/lib1.dart' show foo, bar;
// Import only foo and bar.
import 'package: mylib/mylib.dart' hide foo;
// Import all names except foo
Di seguito vengono fornite alcune librerie di uso comune:
Suor n | Libreria e descrizione |
---|---|
1 | dart:io File, socket, HTTP e altro supporto I / O per le applicazioni server. Questa libreria non funziona nelle applicazioni basate su browser. Questa libreria è importata per impostazione predefinita. |
2 | dart:core Tipi, raccolte e altre funzionalità di base incorporate per ogni programma Dart. Questa libreria viene importata automaticamente. |
3 | dart: math Costanti e funzioni matematiche, più un generatore di numeri casuali. |
4 | dart: convert Codificatori e decodificatori per la conversione tra diverse rappresentazioni di dati, inclusi JSON e UTF-8. |
5 | dart: typed_data Elenchi che gestiscono in modo efficiente dati di dimensioni fisse (ad esempio, interi a 8 byte senza segno). |
Esempio: importazione e utilizzo di una libreria
L'esempio seguente importa la libreria incorporata dart: math. Lo snippet chiama il filesqrt() funzione dal mathbiblioteca. Questa funzione restituisce la radice quadrata di un numero che le è stato passato.
import 'dart:math';
void main() {
print("Square root of 36 is: ${sqrt(36)}");
}
Output
Square root of 36 is: 6.0
Incapsulamento nelle biblioteche
Gli script Dart possono anteporre agli identificatori un trattino basso (_) per contrassegnare i suoi componenti come privati. In poche parole, le librerie Dart possono limitare l'accesso al suo contenuto da script esterni. Questo è definito comeencapsulation. La sintassi per lo stesso è data di seguito:
Sintassi
_identifier
Esempio
In un primo momento, definire una libreria con una funzione privata.
library loggerlib;
void _log(msg) {
print("Log method called in loggerlib msg:$msg");
}
Quindi, importa la libreria
import 'test.dart' as web;
void main() {
web._log("hello from webloggerlib");
}
Il codice precedente genererà un errore.
Unhandled exception:
No top-level method 'web._log' declared.
NoSuchMethodError: method not found: 'web._log'
Receiver: top-level
Arguments: [...]
#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:184)
#1 main (file:///C:/Users/Administrator/WebstormProjects/untitled/Assertion.dart:6:3)
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)
Creazione di librerie personalizzate
Dart ti consente anche di utilizzare il tuo codice come libreria. La creazione di una libreria personalizzata prevede i seguenti passaggi:
Step 1: Declaring a Library
Per dichiarare esplicitamente una libreria, utilizzare il library statement. La sintassi per dichiarare una libreria è la seguente:
library library_name
// library contents go here
Step 2: Associating a Library
Puoi associare una libreria in due modi:
- All'interno della stessa directory
import 'library_name'
- Da una directory diversa
import 'dir/library_name'
Esempio: libreria personalizzata
Innanzitutto, definiamo una libreria personalizzata, calculator.dart.
library calculator_lib;
import 'dart:math';
//import statement after the libaray statement
int add(int firstNumber,int secondNumber){
print("inside add method of Calculator Library ") ;
return firstNumber+secondNumber;
}
int modulus(int firstNumber,int secondNumber){
print("inside modulus method of Calculator Library ") ;
return firstNumber%secondNumber;
}
int random(int no){
return new Random().nextInt(no);
}
Successivamente, importeremo la libreria -
import 'calculator.dart';
void main() {
var num1 = 10;
var num2 = 20;
var sum = add(num1,num2);
var mod = modulus(num1,num2);
var r = random(10);
print("$num1 + $num2 = $sum");
print("$num1 % $num2= $mod");
print("random no $r");
}
Il programma dovrebbe produrre quanto segue output -
inside add method of Calculator Library
inside modulus method of Calculator Library
10 + 20 = 30
10 % 20= 10
random no 0
Prefisso della libreria
Se importi due librerie con identificatori in conflitto, puoi specificare un prefisso per una o entrambe le librerie. Utilizzare il'as'parola chiave per specificare il prefisso. La sintassi per lo stesso è data di seguito:
Sintassi
import 'library_uri' as prefix
Esempio
Per prima cosa, definiamo una libreria: loggerlib.dart.
library loggerlib;
void log(msg){
print("Log method called in loggerlib msg:$msg");
}
Successivamente, definiremo un'altra libreria: webloggerlib.dart.
library webloggerlib;
void log(msg){
print("Log method called in webloggerlib msg:$msg");
}
Infine, importeremo la libreria con un prefisso.
import 'loggerlib.dart';
import 'webloggerlib.dart' as web;
// prefix avoids function name clashes
void main(){
log("hello from loggerlib");
web.log("hello from webloggerlib");
}
Produrrà quanto segue output -
Log method called in loggerlib msg:hello from loggerlib
Log method called in webloggerlib msg:hello from webloggerlib