2012-04-13 5 views
6

scala 패키지 객체와 Predef에 정의 된 것과 다른 점은 무엇입니까?스칼라 패키지 객체 대 사전 정의

Predef은 패키지 객체가 존재하지 않는 경우에만 유물입니까? 아니면 둘 다 필요하게되는 다른 이유가 있습니까? ScalaDoc에 따르면

답변

4

,

"는 Predef 객체가 명시 적 자격없이 모든 스칼라 컴파일 단위에 액세스 할 수있는 정의를 제공합니다"

그래서,이 패키지 객체 자체가 아니라, "모든 Scala 컴파일 유닛"에 기능을 제공한다는 측면에서 하나의 역할을합니다.

상황이 왜 존재하는지에 관해서는, 나는 당신이 옳다고 생각합니다. legacy issue

이유는 계속해서 PreDef가 병합되지 않도록 limitations of package objects이 계속 될 수 있습니다.

+0

스칼라 패키지 객체에 들어갈 수없는 Predef의 구체적인 예가 있는지 궁금합니다. –

+0

Predef는 패키지 객체로 잘 작동하지만, 스칼라 코어 devs가 유지하려고 선택한 이유가 있어야합니다 이 경우 비 패키지 객체로 미리 정의하십시오. Predef의 실마리는 : "scala.'package'// scala 패키지 객체를 강제로 보이게하려면". 컴파일러에서 제공하는 "import Predef._"이 있어야합니다. 그렇지 않으면 우리가 얻지 못할 기능을 제공합니다. Predef a package object. 어쨌든, 나는 scala-lang 사용자 그룹이 문제에 대해 밝힐 수있을 것이라고 확신합니다 ... – virtualeyes