이것은 당황 스럽습니다. 필자의 목적은 스칼라가 Java 스타일로 작성된 패키지 문을 처리하는 방법을 이해하는 것이다. 이를 위해, 나는 다음과 같이 DinnerTimeP.scala라는 것을 (약간의 예를 들어 클래스를 썼다. 나는 패키지 폴더를 생성 한 아래 scaladev라는 폴더, 저녁 식사를스칼라가 Java 스타일 패키지 문을 처리하는 방법
package dinnertime
class Dinner {
val veggie = "broccoli"
def announceDinner(veggie: String) {
println("Dinner happens to be tasteless " + veggie + " soup")
}
}
을이 패키지의 삶에서 DinnerTimeP.scala는. DOS 명령에 나는 다음 아래 scalac로 (이름이 바보 소리) 저녁 식사로 이동하여 파일 DinnerTimeP을 컴파일합니다.
C:\scala-2.9.1.final\scala-2.9.1.final\scaladev\dinnertime>set CLASSPATH=.;C:\scala- 2.9.1.final\scala-2.9.1.final\scaladev
C:\scala-2.9.1.final\scala-2.9.1.final\scaladev\dinnertime>scalac DinnerTimeP.scala
내가 Dinner.class 바로 저녁 식사 폴더 아래에 생성 찾을 기대했다
소스 파일 DinnerTimeP.scala 옆에 앉아. 내 이해를 확인하기 위해 HelloWorld 동일한 폴더에있는 .java 프로그램은 다음과 같이
package dinnertime;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
I 명령 라인 HelloWorld.java 컴파일 : C : \ scala-2.9.1.final \ 스칼라 2.9.1. final \ scaladev \ dinnertime> javac HelloWorld.java
HelloWorld.class 파일은 소스 파일 바로 옆에 생성되었습니다. 이것은 스칼라 소스 파일과 컴파일 된 파일을보고 싶었던 정확한 상황이었습니다. 대신 패키지 폴더 dinnertime 내에 스칼라에 의해 생성 된 새 패키지 폴더가 표시됩니다.
이것은 순진 할 수도 있습니다. 스칼라와 패키지에 대한 근본적인 이해를 배반했을 지 모르지만, 나는이 동작에 당혹 스러웠다. 이것은 나 자신에게 설명 할 수없는 문제입니다. 새로 생성 된 클래스 파일에 대해 중첩 된 패키지가 만들어지는 이유는 무엇입니까? 이것은 내 자신의 성실한 노력에 기초하여 내가 풀기를 바랐던 문제이다. 현재 스칼라에 대한 나의 경험이 제한되어 있으므로, 스칼라 전문가에게 stackoverflow에 무슨 일이 일어나는지 알 수 있도록 도움을 요청했다. 왜? Java가 아닌 Scala에서이 중첩 패키지를 만들 이유가 있습니까? 모든 루트 디렉토리에서 컴파일 시도의
나는 그것을 모두 본다. 이것은 매우 유용한 정보입니다. 나는 굉장한 피드백과 당신이 물건을 설명하기 위해 넣는 모든 노력에 감사한다. – ilango