2012-12-14 19 views

cevap

42

Dart ad alanı kavramına sahip değil, bunun yerine kitaplıklara sahip. Bir kitaplığın bir ad alanına eşdeğer olması için bir kütüphane olabileceğini düşünebilirsiniz, böylece bir kitaplık birden çok dosyadan oluşturulabilir ve birden çok sınıf ve işlev içerebilir.

Dart'taki gizlilik de sınıf seviyesinden ziyade kütüphanede (altyazıyla öntanımlı bir şey bu kütüphaneye özeldir).

kütüphane bir kamu örneğini kullanarak (kütüphane tanımlayan bir örnek: Parça dosyaları yalnızca düzenlemenize yardımcı olmak için kullanılmaktadır

// utilities.dart 
library utilities; // being the first statement in the library file 

Sen part anahtar sözcüğünü kullanarak aynı kütüphanenin diğer dosyaları bölümünü yapabilirsiniz. kodunuzu, tüm sınıflarınızı tek bir kütüphane dosyasına yerleştirebilir veya birkaç parça dosyası (veya parça dosyaları ve kütüphane dosyası) arasında bölebilirsiniz - yürütme üzerinde hiçbir etkisi yoktur.Ana kütüphane dosyasını yerleştirmek için stilistiktir. Bir üst klasör ve bölüm dosyaları bir src/ klasöründe.

Örnekleri genişletme Bölüm dosyalarını göstermek için e.

// utilities.dart 
library utilities; 

part "src/string_utils.dart"; 
part "src/date_utils.dart"; 

olanlar bölümlü dosya

sonra part of deyimini kullanarak, parçası oldukları kitaplığına geri bağlantı: Artık bir işlevi içeren bir kütüphane olduğunu

// 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 

, o kütüphaneden yararlanabilir başka yerde import tarafından kütüphane ing:

// 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 
} 

Eğer iki kitaplıkları içe barındırmadığını (çatışmaları önlemek için kütüphane diğer ad istiyorsanız, hem reverseString() fonksiyonu içeren, sen as anahtar kelime kullanın:

// 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"); 
} 

ithalat beyanı da paketlerin kullanımı pub tarafından ithal olarak yapar, Dart'ın paket yöneticisi, aynı zamanda github kütüphanenizi barındırabilir böylece veya başka bir yerde, ve böylece kütüphanenizi referans:

// my_app.dart; 
import "package:utilities/utilities.dart"; 

main() { 
    var reversed = reverseString("Foo");   
} 

pub bağımlılık kütüphanesini bulmak için nereye pub anlatıyor bir pubspec.yaml dosyasında tanımlanır.

  • import açıklamaları içerir: Sen sadece kitaplık dosyası can not etmek önemlidir pub.dartlang.org

    adresinden daha fazla bilgi bulabilirsiniz. Parça dosyaları olamaz.

  • , library anahtar sözcüğünü içerir. Parça dosyaları olamaz.
  • , part dosyalarını içerir. Parça dosyaları olamaz.

Son bir nokta olan bir çalıştırılabilir uygulama dosyası can (ve olması muhtemeldir) bir kitaplık dosyası ve ayrıca not edilmelidir

// 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....? 
} 
+0

parça dosyalarının yapılabilir o 'kısmını kullanarak Yönerge önerilmez. * "Not: Bir kitaplığı birden fazla Dart dosyasına bölmenize izin veren bölüm yönergesini duymuş olabilirsiniz. Parça kullanmamanızı ve bunun yerine mini kitaplıklar oluşturmanızı öneririz." * - https: //www.dartlang. org/kılavuzlar/kütüphaneler oluşturmak/kitaplığı-paketleri – Subfuzion