2012-08-03 2 views
1

라이브러리의 기본적인 사용법은 같은 이름을 정의하는 것입니다 : 내 경우Dart에서 더 깊은 라이브러리 계층을 처리하는 방법은 무엇입니까?

#library('Name'); 

, 나는 "중첩"또는 "깊은"라이브러리 계층 구조를 정의하고 싶습니다. 그래서 내가 가진 경우 프레임 워크 Foo에게 전화의 내가 라이브러리 Messenger을 구축 가정 해 봅시다 :

#library('Messenger'); 

내가 그 다른 무언가와 충돌 것 같군요. 내가 찾는 것은 다음과 같습니다 :

#import('Foo.Messenger'); 

메신저 라이브러리는 Foo 라이브러리 세트의 일부입니다.

어떻게 접근할까요? 내가 알고있는 것처럼, 사람들이 같은 라이브러리에 참조합니다 : 당신이 당신의 라이브러리가 네임 스페이스와 충돌 할 수 있다는 우려되는 경우

#import('package:Foo.Messenger') 

답변

1

, 다음 접두사를 사용하는 경우 정의 될 필요가있다. 그러나 라이브러리를 사용할 때 다른 사람이 접두어를 사용하도록 강요 할 수는 없습니다. 해당 라이브러리에서 수입

#import('lib/library.dart', prefix: 'myLib'); 

이제 아무것도 같은 호출 할 필요가있다 :

는이 같은 가져올 것 접두사를 직접 사용

var item = new myLib.SomeClass(); 

더 자세한 내용은이 link를 참조하십시오.

어젯밤에 정의 된 패키지는 하나 또는 여러 개의 타사 라이브러리를 배포하고 가져 오는 수단입니다. 아직 많은 개발이 진행되고 있지만 일단 가져온 라이브러리가 어떻게 호출되는지는 바뀌지 않습니다.

다트의 펍 패키지 관리자에 대한 자세한 내용은 link을 참조하십시오.

+0

지금까지 2 번이나 해본 패키지를 이해합니다. 또한 언어 안내 및 사양을 읽은 접두어에 대해서도 알고 있지만 라이브러리 이름과의 충돌을 피하는 방법은 잘 모릅니다. 즉,'#library (...);'라고 쓰는 이유가 있습니다. 이름은 예를 들어 리플렉션에서 사용됩니다 (예정된 기능). – Tower

+0

정확하지만 라이브러리 이름이 아니라 파일 이름으로 가져옵니다. 라이브러리 이름은 내부 식별자입니다. 원하는 경우 '핵심'파일과 유사한 라이브러리를 사용하고 라이브러리 이름을 다음과 같이 지정할 수 있습니다. #library ("packageName : lib1") #library ("packageName : lib2") 등. 정의한 이름으로 임포트하지 마십시오. –

관련 문제