14
A
回答
42
達特沒有命名空間的概念,而是它有圖書館。您可以將庫視爲等同於命名空間,因爲庫可以由多個文件組成,並且包含多個類和函數。
Dart中的隱私也在圖書館,而不是類級別(任何以下劃線作爲前綴的內容對該圖書館都是私有的)。
來定義庫(使用的實用工具庫的例子的一個例子:
// utilities.dart
library utilities; // being the first statement in the library file
您可以通過使用part
關鍵字使同一個庫的其他文件部分部分文件只用於幫助組織你的代碼;你可以把所有的類放在一個單獨的庫文件中,或者將它們拆分成幾個部分文件(或者部分文件和庫文件) - 它對執行沒有影響。父文件夾,文件的一部分在src/
文件夾。
擴大爲例e顯示零件文件。
// utilities.dart
library utilities;
part "src/string_utils.dart";
part "src/date_utils.dart";
那些部分文件,然後鏈接到該庫他們的一部分使用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
現在你有一個包含一個函數庫,你可以使用該庫的其他條款import
荷蘭國際集團庫:
// 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
}
如果你想你的別名庫,以避免衝突(在這裏你可以輸入兩個庫,兩者都含有一個reverseString()
功能,您使用as
關鍵字:
// 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");
}
import語句也使用包,因爲進口的酒吧,飛鏢的包管理器,所以你也可以在GitHub上託管你的圖書館或其他地方,並引用您的圖書館像這樣:
// my_app.dart;
import "package:utilities/utilities.dart";
main() {
var reversed = reverseString("Foo");
}
酒館關係在一個pubspec.yaml
文件,它告訴酒館在哪裏可以找到庫中定義。你可以找到更多的pub.dartlang.org
要注意,只有庫文件可以是很重要的:
- 包含
import
語句。零件文件不能。 - 包含
library
關鍵字。零件文件不能。 - 包含
part
文件。零件文件不能。
最後一點是可運行的應用程序文件可以(而且很可能是)一個庫文件,也可以由部分文件
// 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....?
}
相關問題
- 1. 你如何使用命名空間?
- 2. 你如何命名空間你的服務層?
- 3. 如何使用命名空間和類?
- 4. Google Dart在轉換爲JavaScript時如何處理命名空間/包?
- 5. 類命名和命名空間
- 6. 命名空間+類命名衝突
- 7. 如何重命名命名空間?
- 8. 使用類作爲命名空間
- 9. 命名空間和類
- 10. 命名空間中的類
- 11. Microsoft.Management.Infrastructure命名空間 - Cim類
- 12. 把類命名空間內
- 13. PHP命名空間和類
- 14. C++ - 類與命名空間
- 15. PHP:Instanciating命名空間類
- 16. MemoryStream類命名空間
- 17. Python類和命名空間?
- 18. 從一個命名空間擴展的未命名空間類
- 19. 指定XAML類的命名空間不宣而命名空間
- 20. 如何在多個命名空間中命名空間函數?
- 21. 如何在命名空間
- 22. JAXB:如何命名空間
- 23. 如何命名空間
- 24. 命名空間與類名同名
- 25. 你如何測試命名空間post:post routes?
- 26. 你如何處理Savon中的嵌套命名空間?
- 27. 你如何使用Django URL命名空間?
- 28. 無類型命名空間 'STD' 命名爲 '原子'
- 29. 使用任何類/命名空間ZendFramwork
- 30. ,因爲命名空間
應當注意的是,使用'部分'指令是不鼓勵的。 *「注意:您可能聽說過part指令,它允許您將庫分割爲多個Dart文件。我們建議您避免使用part並創建小型庫。」* - https://www.dartlang。組織/引導/庫/創建庫,包 – Subfuzion