2013-05-23 1 views
6

스칼라에서 객체의 별칭을 지정하는 "올바른"방법은 무엇입니까? 예를 들어유형/값 별칭을 제공하는 특성이있는 스칼라 패키지 객체

, 나는 이제 내가 반복 RoleGroup을 가져 오지 않기 때문에 내가 (SBT 하위 프로젝트로 나뉩니다) 내 응용 프로그램의 다양한 부분

trait RoleGroup 
object RoleGroup { 
    case object ADMIN  extends RoleGroup 
    case object MEMBER extends RoleGroup 
    case object PUBLIC extends RoleGroup 
} 

의 범위에 RoleGroup 필요하다고하자 별명 RoleGroup 특성에 결정과 같이 유형과 발 대응에 반대 :

package com.developer 
package controller 

trait ControllerBase { 
    type RoleGroup = controller.RoleGroup 
    val RoleGroup  = controller.RoleGroup 
    ... 
} 

를 다음 하위 프로젝트 패키지 오브젝트는 무료로 수입 얻을 수있는 헬퍼 특성을 확장 할 수 있습니다 :

,369을
package com.client 

package object member 
    extends com.developer.controller.ControllerBase 

범위에 있어야하는 다른 사례 개체에 대해서도 마찬가지입니다. 이것은 합리적인 해결책입니까? 즉 내가 알아야 할 단점/문제점이 있습니까? 모든 것이 컴파일되고 브라우저 테스트 페이지는 리팩터링 이전 애플리케이션에서와 같이 실행되지만 이것이 최선의 접근 방식인지는 확실하지 않습니다.

답변

6

그것은 현명한 접근입니다. 사실 it's being applied in the Scala library 그 자체입니다.

유형 (예 : 특성 및 클래스)과 값 (즉, 객체, 패키지 및 값)은 별개로 생각해야 할 두 가지 수준의 멤버입니다. 당신은 둘 다 커버합니다.

+1

흥미 롭습니다. 별칭 레시피 여야합니다. 그 외에도 개체의 형/클래스 및 val을 입력하십시오. 확실히이 접근법으로 수입 상용구를 많이 줄일 수 있습니다. – virtualeyes