Programowanie w rzutki - biblioteki
Biblioteka w języku programowania reprezentuje zbiór procedur (zestaw instrukcji programistycznych). Dart ma zestaw wbudowanych bibliotek, które są przydatne do przechowywania często używanych procedur. Biblioteka Dart składa się z zestawu klas, stałych, funkcji, typów definicji, właściwości i wyjątków.
Importowanie biblioteki
Importowanie sprawia, że komponenty w bibliotece są dostępne dla kodu wywołującego. Służy do tego słowo kluczowe import. Plik rzutki może zawierać wiele instrukcji importu.
Identyfikatory URI wbudowanej biblioteki Dart używają schematu dart: schemat do odwoływania się do biblioteki. Inne biblioteki mogą używać ścieżki do systemu plików lub pakietu: schemat, aby określić swój identyfikator URI. Biblioteki dostarczane przez menedżera pakietów, takie jak narzędzie publikacji, używają pakietu: schemat .
Składnia importu biblioteki w Dart jest podana poniżej -
import 'URI'
Rozważ następujący fragment kodu -
import 'dart:io'
import 'package:lib1/libfile.dart'
Jeśli chcesz użyć tylko części biblioteki, możesz ją zaimportować selektywnie. Składnię tego samego podano poniżej -
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
Poniżej podano niektóre powszechnie używane biblioteki -
Sr.No | Biblioteka i opis |
---|---|
1 | dart:io Obsługa plików, gniazd, HTTP i innych operacji we / wy dla aplikacji serwerowych. Ta biblioteka nie działa w aplikacjach opartych na przeglądarce. Ta biblioteka jest domyślnie importowana. |
2 | dart:core Wbudowane typy, kolekcje i inne podstawowe funkcje dla każdego programu Dart. Ta biblioteka jest automatycznie importowana. |
3 | dart: math Stałe i funkcje matematyczne oraz generator liczb losowych. |
4 | dart: convert Kodery i dekodery do konwersji między różnymi reprezentacjami danych, w tym JSON i UTF-8. |
5 | dart: typed_data Listy, które wydajnie obsługują dane o stałym rozmiarze (na przykład 8-bajtowe liczby całkowite bez znaku). |
Przykład: Importowanie i używanie biblioteki
Poniższy przykład importuje wbudowaną bibliotekę dart: math. Fragment wywołujesqrt() funkcja z mathbiblioteka. Ta funkcja zwraca pierwiastek kwadratowy z podanej liczby.
import 'dart:math';
void main() {
print("Square root of 36 is: ${sqrt(36)}");
}
Output
Square root of 36 is: 6.0
Hermetyzacja w bibliotekach
Skrypty Dart mogą poprzedzać identyfikatory znakiem podkreślenia (_), aby oznaczyć komponenty jako prywatne. Mówiąc najprościej, biblioteki Dart mogą ograniczać dostęp do swoich treści przez zewnętrzne skrypty. Nazywa się toencapsulation. Składnię tego samego podano poniżej -
Składnia
_identifier
Przykład
Najpierw zdefiniuj bibliotekę z funkcją prywatną.
library loggerlib;
void _log(msg) {
print("Log method called in loggerlib msg:$msg");
}
Następnie zaimportuj bibliotekę
import 'test.dart' as web;
void main() {
web._log("hello from webloggerlib");
}
Powyższy kod spowoduje błąd.
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)
Tworzenie bibliotek niestandardowych
Dart pozwala również na użycie własnego kodu jako biblioteki. Tworzenie biblioteki niestandardowej obejmuje następujące kroki -
Step 1: Declaring a Library
Aby jawnie zadeklarować bibliotekę, użyj library statement. Składnia deklarowania biblioteki jest taka, jak podano poniżej -
library library_name
// library contents go here
Step 2: Associating a Library
Bibliotekę można skojarzyć na dwa sposoby -
- W tym samym katalogu
import 'library_name'
- Z innego katalogu
import 'dir/library_name'
Przykład: biblioteka niestandardowa
Najpierw zdefiniujmy bibliotekę niestandardową, 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);
}
Następnie zaimportujemy bibliotekę -
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");
}
Program powinien generować następujące elementy output -
inside add method of Calculator Library
inside modulus method of Calculator Library
10 + 20 = 30
10 % 20= 10
random no 0
Przedrostek biblioteki
Jeśli importujesz dwie biblioteki z kolidującymi identyfikatorami, możesz określić przedrostek dla jednej lub obu bibliotek. Użyj'as'słowo kluczowe do określania przedrostka. Składnię tego samego podano poniżej -
Składnia
import 'library_uri' as prefix
Przykład
Najpierw zdefiniujmy bibliotekę: loggerlib.dart.
library loggerlib;
void log(msg){
print("Log method called in loggerlib msg:$msg");
}
Następnie zdefiniujemy kolejną bibliotekę: webloggerlib.dart.
library webloggerlib;
void log(msg){
print("Log method called in webloggerlib msg:$msg");
}
Na koniec zaimportujemy bibliotekę z prefiksem.
import 'loggerlib.dart';
import 'webloggerlib.dart' as web;
// prefix avoids function name clashes
void main(){
log("hello from loggerlib");
web.log("hello from webloggerlib");
}
Spowoduje to, co następuje output -
Log method called in loggerlib msg:hello from loggerlib
Log method called in webloggerlib msg:hello from webloggerlib