library în Dart

Biblioteci, importuri și comentarii Dart 1.0 (library; fără nume din Dart 2.19)

Directiva de la începutul unui fișier Dart care marchează biblioteca, pentru documentație sau adnotări.

Sintaxă
/// Documentația bibliotecii.
library;                 // fără nume (recomandat)

library magazin.preturi;  // cu nume (formă veche)

Ce face library

În Dart, fiecare fișier este automat o bibliotecă, chiar și fără directiva library. Biblioteca este unitatea de confidențialitate: numele care încep cu _ sunt vizibile doar în interiorul ei (fișierul și eventualele lui part-uri).

Directiva library; (fără nume, din Dart 2.19) se scrie la începutul fișierului când vrei să atașezi documentația /// sau adnotări întregii biblioteci, nu primei declarații. Forma veche, cu nume (library magazin.preturi;), mai apare în cod vechi; numele nu mai sunt necesare.

Exemplele de pe această pagină sunt fișiere singure: fiecare este o bibliotecă, iar _ se comportă exact cum se descrie.

Exemple

Exemplul 1: library cu documentație

Comentariul /// descrie biblioteca, pentru că stă deasupra lui library;. Programul rulează normal.

/// Calculează costul unei călătorii cu mașina.
library;

const pretBenzina = 7.35;

double costDrum(double km, double consumLa100) => km * consumLa100 / 100 * pretBenzina;

void main() {
  print('București - Brașov: ${costDrum(170, 6.5).toStringAsFixed(2)} lei');
}

Rezultat

București - Brașov: 81.22 lei

Exemplul 2: Confidențialitate la nivel de bibliotecă

_pin este privat, dar main îl poate citi pentru că este în aceeași bibliotecă (același fișier). Din alt fișier, card._pin ar da eroare.

library;

class Card {
  final String titular;
  final String _pin;
  Card(this.titular, this._pin);

  bool verifica(String pin) => pin == _pin;
}

void main() {
  final card = Card('Sorina', '4821');
  print(card.verifica('1111'));
  print(card.verifica('4821'));
  print('Acces din aceeași bibliotecă: ${card._pin.length} cifre');
}

Rezultat

false
true
Acces din aceeași bibliotecă: 4 cifre

Greșeli frecvente

  • Să crezi că library este obligatoriu: fiecare fișier este oricum o bibliotecă.
  • Nume de bibliotecă inventate pentru „organizare” (library utilitare.text.format;): sunt depășite, folosește library; sau nimic.
  • library scris după import: directiva trebuie să fie prima din fișier (doar comentariile pot sta înainte).

Comenzi înrudite

  • part și part of: Împarte o singură bibliotecă în mai multe fișiere, care își văd reciproc și numele private.
  • export: Face ca numele dintr-o altă bibliotecă să fie disponibile și celor care importă biblioteca curentă.
  • import: Face disponibile în fișierul curent numele publice ale altei biblioteci: din SDK, dintr-un pachet sau din proiect.
  • comentarii și documentare: Textul ignorat de compilator: // pe un rând, /* */ pe mai multe, și /// pentru documentația generată cu dart doc.