Jak utworzyć przestrzeń nazw dla klasy Dart? Pochodzę z tła C#, gdzie można po prostu użyć namespace SampleNamespace { }
.Jak nazywasz klasę Dart?
Jak osiągnąć to samo w Dart?
Jak utworzyć przestrzeń nazw dla klasy Dart? Pochodzę z tła C#, gdzie można po prostu użyć namespace SampleNamespace { }
.Jak nazywasz klasę Dart?
Jak osiągnąć to samo w Dart?
Dart nie ma pojęcia przestrzeni nazw, ale zamiast tego ma biblioteki. Można uznać bibliotekę za równoważną przestrzeni nazw, ponieważ biblioteka może składać się z wielu plików i zawierać wiele klas i funkcji.
Prywatność w Dart jest również w bibliotece, a nie na poziomie klasy (cokolwiek przedrostka z podkreśleniem jest prywatne dla tej biblioteki).
Przykładem definiowania bibliotekę (używając przykładem użyteczności biblioteki.
// utilities.dart
library utilities; // being the first statement in the library file
można wprowadzić inne pliki część tej samej biblioteki za pomocą słowa kluczowego part
plików części są wykorzystywane wyłącznie w celu zorganizowania Twój kod, możesz umieścić wszystkie swoje klasy w jednym pliku biblioteki lub podzielić je na kilka plików części (lub plików części i pliku biblioteki) - nie ma to wpływu na wykonanie, jest stylistyczne, aby umieścić główny plik biblioteki folder nadrzędny i pliki części w folderze src/
.
Poszerzenie exampl e, aby wyświetlić pliki części.
// utilities.dart
library utilities;
part "src/string_utils.dart";
part "src/date_utils.dart";
tych plików częściowych następnie połączyć z powrotem do biblioteki są częścią za pomocą komunikatu part of
:
// src/string_utils.dart
part of utilities;
// functions and classes
String reverseString(s) => // implementation ....
String _stringBuilder(strings) => // a private (to the library) function,
// indicated by the leading underscore
//... snip other classes and functions
Teraz masz biblioteki zawierającej funkcję, można skorzystać z tej biblioteki gdzie indziej przez import
ing bibliotekę:
// my_app.dart;
import "path/to/library/utilities.dart";
main() {
var reversed = reverseString("Foo");
// _stringBulider(["a","b"]); // won't work - this function is
// only visible inside the library
}
Jeśli chcesz alias bibliotekę, aby uniknąć kolizji (gdzie można importować dwie biblioteki, zarówno zawierających reverseString()
funkcji, należy użyć as
kluczowe:
// my_app.dart;
import "path/to/library/utilities.dart";
import "some/other/utilities.dart" as your_utils;
main() {
var reversed = reverseString("Foo");
var your_reversed_string = your_utils.reverseString("Bar");
}
Oświadczenie import również korzysta z pakietów, jak importować pubie, menedżer pakietów DART, więc można również zorganizować swoją bibliotekę na github lub gdzie indziej, odwoływać się do biblioteki jako tak:
// my_app.dart;
import "package:utilities/utilities.dart";
main() {
var reversed = reverseString("Foo");
}
zależność pub jest zdefiniowana w pliku pubspec.yaml
, który mówi pub, gdzie można znaleźć bibliotekę. Możesz dowiedzieć się więcej na pub.dartlang.org
Ważne jest, aby pamiętać, że tylko plik biblioteki mogą:
import
oświadczenia. Pliki części nie mogą.library
. Pliki części nie mogą.part
. Pliki części nie mogą.Jeden punkt końcowy jest taki, że runnable app plik może (i prawdopodobnie będzie) plik biblioteki, a także może być wykonana z plików części
// my_app.dart;
library my_app;
import "package:utilities/utilities.dart";
part "src/edit_ui.dart";
part "src/list_ui.dart";
part "src/foo.dart";
main() {
var reversed = reverseString("Foo");
showEditUi(); // perhaps defined in edit_ui.dart....?
}
Należy zauważyć, że użycie 'udział "dyrektywa jest zniechęcona. * "Uwaga: Być może słyszałeś o dyrektywie dotyczącej części, która pozwala dzielić bibliotekę na wiele plików Dart. Zalecamy, aby unikać używania części i tworzyć mini biblioteki." * - https: //www.dartlang. org/guides/libraries/create-library-packages – Subfuzion