2012-12-11 6 views
6

패키지 com.example.a.b.c 아래에 일련의 사례 클래스가있는 스칼라 프로젝트가 있다고 가정 해 보겠습니다. 이 모든 클래스를 com.example.c 패키지로 가져 와서 내 프로젝트의 다른 모든 곳에서 com.example.ccom.example.a.b.c의 모든 사례 클래스를 모두 사용하기 만하면 import com.example.c._ 만 필요합니다.다른 패키지로 가져 오기

어떻게하면됩니까?

+0

논리적 인 방식으로 코드를 구성하려고하고 있으며 조직을 제어하고 있습니까? 그렇다면 특성 (또는 특성)에서'com.example.a.b.c' 사례 클래스를 정의한 다음'패키지 객체 c extends ThatTrait'를 작성할 수 있습니다. Scalaz는이 접근 방식을 광범위하게 사용합니다. –

+0

흥미로운 접근 방법입니다! 실제로'com.example.a.b.c'를 제어 할 수 없으므로 팀과 논의해야합니다. – user510159

답변

8

내보내기 메커니즘을 추가하는 방법에 대한 설명이 있지만 원하는대로 할 수는 있지만 명확하지 않습니다. 어떤 경우

, 지금있는 유일한 방법은

  • 이다마다 동일한 발을 설정 모든 클래스
  • 의 유형을 정의 객체

그래서 예를 들어,

package bar 
case class Foo(i: Int) {} 

와 다른 패키지에서 모방해야합니다.
package object baz { 
    type Foo = bar.Foo 
    val Foo = bar.Foo 
} 

사람들은 대개 추가 가져 오기 또는 2 단계로 해결합니다.

+0

감사합니다. Rex! 수락 됨! 나는 여분의 수입이 쉬운 솔루션 것에 동의하지만, 사방이 필요하고 4 별도의 import 문, 말, 끝낼 때 진짜 고통이다. 그리고 유지 보수 목적을 위해, 나는 한 곳에서 급격한 변화를 가져오고 싶습니다. – user510159

1

스칼라의 import 문 그냥 자바, C/C의 #include 지시문을 좋아하지 같은 다른 클래스를 찾을 수있는 컴파일러 지시 ++ 곳 컴파일러가 물리적으로 복사 전체 헤더 파일을. 케이스 클래스를 com.example.a.b.c에서 사용하려는 경우, 기존 방식대로 자신의 패키지에서 가져와야합니다.