2012-01-01 3 views
1

작은 스칼라 프로젝트에서 작업하고 있습니다. 나는 '수입'다음과 같은 문제가 내 파일 중 하나의 상단에, 나는이 명령이 일이 가져올 경우스칼라 IDE 또는 스칼라 이상한 가져 오기 동작

:

import main.Main._ 
import main.game.Game 
     ^^^^ 

를이 밑줄에서 나에게 다음과 같은 오류 메시지를 제공합니다 'main'word : "Main 객체의 메소드 main에 대한 인자가 빠졌습니다. 부분적으로 적용된 함수로 취급하고 싶다면`_ '로이 메소드를 따르십시오. 특히 이것은 단지 import 문일뿐입니다. 그리고 당연히 실제 수입이 발생하지 않습니다. 처음에 나는 세미콜론 유추 단점에 대해 다시 생각했지만 그렇지 않습니다. 두 줄을 바꿔서 다음과 같이 작성하면 :

import main.game.Game 
import main.Main._ 

이면 모든 것이 좋습니다.

누군가가 그걸 밝힐 수 있습니까? 스칼라에 대해 특별한 것이 있습니까?

답변

8

아마도 에 main 방법이 있습니다. 그래서 import main.Main._ 이후 main 패키지 대신에 main이이 방법을 참조합니다. 다음과 같은 방법으로 피할 수 있습니다.

  1. 질문과 같이 가져 오기 순서를 변경하십시오.
  2. Daniel C. Sobral의 대답에서 알 수 있듯이 main 메서드를 가져 오지 마십시오.
  3. 은 명시 적으로 최상위 레벨 main 패키지 싶은 말 : 당신은 회원 (또는 서브 패키지)가 않을만큼,

    import _root_.main.game.Game 
    

대부분의 경우이 문제가 발생하지 않도록해야한다 the normal Java package naming convention에 따라이라고 com 또는 org (비록 net이 문제 일 수 있음).

6

main 내부에 main.Main이라는 메서드가 있습니다. 그렇습니까? 글을 가져온 이후 패키지의 섀도우를 main으로 변경했습니다. 확인을 위해 다음과 같이 시도하십시오.

import main.Main.{main => _, _} 
import main.game.Game 

여기에는 main이 가져 오기되지 않습니다.

+0

흠, 흥미 롭습니다. Java에서이 문제에 결코 빠져 들지 않았습니다. Java의 메서드는 최상위 클래스 값이 아닙니다. 고맙습니다! 좋은 사람들이 사물을 이해하는 것을 돕는 것은 너무 즐겁습니다. S.O. 때때로 두 사람이 서로 융합하여 서로 보완하기 때문에 받아 들여지는대로 두 개의 광석을 더 대답 할 수 없습니다. 나는 Alexey 's를 좀 더 일반적인 것으로 선택하고, 또한 당신의 대답을 언급한다. – noncom

+0

@noncom Java에는 상대적 가져 오기가 없습니다. –

+0

예! 절대로 그렇게 생각하지 마라. – noncom