2013-09-07 3 views
0

로 객체, 여기에 질문 :스칼라 내가 스칼라에 새로운 해요 범위

object Models { 

    class A1 { // some methods } 

    class A2 { // some methods } 
} 

이 코드는 작동 모델 범위 지정 단위의 일종으로 취급 할 것 같다 - 내가 필요로하는 곳에 내가 가져올 수 있습니다 에. 이것은 일반적인 관행입니까? 이것을 패키지의 범위를 지정하는 방법으로 사용할 수 있습니까? 비슷한 행동을하는 패키지 객체가있는 것 같습니다. 내가 알아야 할이 방법에 문제가 있습니까?

+1

! pkg 객체의 이전 문제가 수정되었습니다. 이 답변 http://stackoverflow.com/a/17276060/1296806을 참조하십시오. 때로는 객체를 포함하는 외부 ptrs가 문제가됩니다. –

+0

역사적으로 https://issues.scala-lang.org/browse/SI-1987 및 패키지 개체가 있으면 재 컴파일을 방해 할 수 있습니다. PO는 의도 한대로 사용하는 것이 가장 좋습니다. 마지막으로, 케이크가 패스트리 객체에 쌓인 여러 종류의 유형이라는 것을 상기하십시오. –

+0

패키지 객체가 열려 있습니까? – pedrofurla

답변

2

정상적으로 수행되며 필요에 따라 사용할 수 있습니다. 당신은 일반적으로 파일 (Consts 예를 들면) 안에있을 수없는 것들을 그룹화 할 수 있습니다.

val DefaultKey="12345" //not legal inside a file outside of a class or object 

class A (key:String) { 

} 

법률 버전 :

package com.mytest 

object KeyExchange { 

    val DefaultKey="12345" //now legal 

    class A (key:String) { 

    } 

} 

사용 :

object Test extends App { //extending App is like a main method 

    import com.mytest.KeyExchange._ //can use import statement here, bringing in class A and the const. 

    val myA = new A(DefaultKey) 
} 

패키지 개체 일들이이 클래스와 특성을 사용할 수있게의 내부에 배치를 제외하고, 가지 개념처럼 이 패키지의 일부로 정의됩니다 (예 : com.mytest). 클래스에서 자주 사용하는 const 항목이나보다 중요한 암시 적 함수 및 객체를 넣을 장소입니다. 이러한 모든 것들을 별도의 파일 및 객체에 배치 할 수 있지만 매번 명시 적으로 객체를 가져와야합니다. 패키지 객체를 사용할 필요가 없습니다. 제 생각에 이것은 대부분의 수업에서 사용할 수있는 항목에 대해서는이 기능을 드물게 사용해야합니다.

참조 : 예, 우리가 할 수있는 http://www.scala-lang.org/docu/files/packageobjects/packageobjects.html

관련 문제