2017-01-17 56 views
2

我可以說兩個遊戲項目:動物園1和動物園2.兩個都有一個名爲動物的類。爲了避免兩個具有相同名稱的類之間的衝突,我將它們包裝在函數中。 Dart如何處理這種情況?通過包或庫?一個用作命名空間的主類?如果是這樣,那麼它如何將它們轉換爲JavaScript?Google Dart在轉換爲JavaScript時如何處理命名空間/包?

回答

5

Dart沒有名稱空間。您可以使用進口的前綴爲

import 'package:zoo1/zoo1.dart' as zoo1; 
import 'package:zoo2/zoo2.dart' as zoo2; 

main() { 
    print(new zoo1.Animal()); 
    print(new zoo2.Animal()); 
} 

,如果你想同時導入,您還可以使用前綴只針對這些

import 'package:zoo1/zoo1.dart'; 
import 'package:zoo2/zoo2.dart' as zoo2; 

main() { 
    print(new Animal()); 
    print(new zoo2.Animal()); 
} 

之一,但只希望使用從zoo2Animal那麼你可以隱藏一個

import 'package:zoo1/zoo1.dart' hide Animal; 
import 'package:zoo2/zoo2.dart'; 

main() { 
    print(new Animal()); // uses Animal from zoo2 
} 

我假設對於JS他們總是使用一些前綴來消除歧義。

+0

啊!所以它們以給出的名稱作爲前綴:class zoo2_zoo2。說得通。飛鏢可能是有史以來使用過的最好的語言。這是迄今爲止最清潔的。最好從Java,C#和JavaScript。你認爲谷歌會不會重新考慮將其整合到鉻?我猜js單一文化是牢不可破的。 – Asperger

+0

不,瀏覽器中的Dart虛擬機不會發生,但Dart-to-JS會不斷改進。瀏覽器中的JS在優化x-to-JS代碼方面會變得更好。像類,Promise等ES6功能已經改進,並且可以在所有瀏覽器中都可用時使用。恕我直言,大多數人認爲它是一個優勢,因爲在瀏覽器中使用Dart虛擬機會使它進一步演化語言非常繁瑣。 –

+0

我想知道什麼飛鏢會變得流行 – Asperger