2011-09-15 4 views
1

나는 네임 스페이스가 단위의 컨테이너라는 것을 이해했다. 그러나 나는 그것으로 일하는 것으로 잘 이해하지 못했습니다. 나는 내가 원하는 것을 더 잘 설명하려고 노력한다. 예를 들어 나는 4 개의 유닛을 가지고있다 :네임 스페이스와 단위

1) Animals    // es: class TAnimals 
2) Animals.Dog   // es: class TDog 
3) Animals.Cat   // es: class TCat 
4) Animals.Cat.Female // es: class TFemale 

물론이 4 개의 유닛은 4 개의 다른 파일에있다. 거의 문제가되지 때까지 지금

uses 
    Animals, Animals.Dog, Animals.Cat, Animals.Cat.Female 

하지만 때 매우입니다 : 내가 새로운 유닛을 모두 사용이 필요한 경우 , 내가 쓰기? 다른 모든 때문에 가진 것을 포함하는 동물 (네임 스페이스 루트) :

uses 
    Animals; 

을 그리고에 정의 된 모든 다른 클래스 동물에서 액세스 할 수 있도록 그래서 나는 1 만 개 단위를 만들고, 내가 더 잘 관리 할 수있는 알고 싶어 예를 들어 두 번째, 세 번째 등 수준의 다른 모든 네임 스페이스 :

program Project1; 
uses 
    Animals; 
var 
    x: Animals; 
begin 
    x := TAnimals.Cat.Female.Create; 
    try 
    .... 
    finally 
    x.Free; 
    end; 
end. 

인터넷에서 검색은, 어쩌면 내가 인터페이스를 사용하여 뭔가를 발견,하지만 난 내 의견 렸기 때문에 정확하지 솔루션 뭔가를 훨씬 복잡 인상을 그 델파이 xe2는 기본입니다. 아마 나는 실수를했거나 델파이의 구 버전을 가리킨다. 진심으로 나는 모른다. 하지만 내가 할 수있는대로 알고 싶었습니다. 물론 가능하다면. 다시 한 번 감사드립니다.

+0

"동물"로 시작하는 검색 경로에있는 모든 유닛이 있다는 것을 의미하지는 않습니다. 사용하지 않아도 자동으로 포함됩니다. 아니, 나는 그것을 좋아하지 않는다! –

답변

2

기본적으로 XE2는 RTL 단위의 이름을 점으로 된 이름으로 바꾸고 명령 줄에 지정된 점선으로 된 접두사가있는 단위를로드하려고 시도합니다.

도트가있는 단위를 갖는 기능은 이미 오랫동안 Delphi에서 이미 존재했습니다.

네임 스페이스에 대해 알고있는 내용은 모두 잊어 버리십시오. Delphi XE2는 그렇지 않습니다. 네임 스페이스 계층에서 유닛을 이동한다는 것은 이름 바꾸기 (예 : 접두사 변경)를 의미합니다. 컨테이너/파일/클래스가 특정 이름을 가지고 있고 위치 인 자바는 네임 스페이스 계층 구조의 위치를 ​​알립니다.

+1

Java 클래스 파일 (올바른 디렉토리에 있음)은 첫 번째 코드 줄 (package com.example; ... public class Bzz ...)에서 해당 패키지 이름을 지정해야하므로 마지막 문장이 잘못되었습니다. 그래서 파일이 있다면 어떤 디렉토리에 있어야하는지 알 수 있습니다. – mjn

+0

아, 그건 필수적이지 않다고 생각했습니다. –

+0

명령 줄뿐만 아니라 프로젝트 옵션 대화 상자에서도 기본 네임 스페이스 (XE2의 단위 공간 이름)를 지정할 수 있습니다. – mjn

관련 문제