REPL에서 범위 지정이 작동하는 방식을 이해하려고합니다. 나는 조슈아 수아레스 (Joshua Suereth)의 스칼라 (Scala) 책 5.1.1 절을 깊이있게 시도했다. 이것은 Windows XP, Java 7 및 스칼라 2.9.1에있다. REPL에 클래스 Dinner
을 선언합니다. 바인딩 Dinner
이 로컬 범위에 있습니다. 그런 다음 로컬로 바인딩되기 때문에 인스턴스화합니다.REPL에서 선언 된 클래스가 내부적으로 처리되는 방식을 이해하려고 시도합니다.
scala> class Dinner {
| val veggie="broccoli"
| def announceDinner(veggie: String){
| println("Dinner happens to be tasteless " + veggie + " soup")
| }
| }
defined class Dinner
scala> new Dinner
res1: Dinner = [email protected]
지금까지는 그렇게 좋았습니다. Dinner
이라는 이름은 로컬로 바인딩되었으며 new Dinner
에 대한 참조를 보유 할 수있는 val x
을 만들 수 있습니다.
내가 지금까지 알고있는 것으로부터, REPL은 내부적으로 객체에 위 코드를 래핑 할 것입니다. 좋아요, 스칼라에 대한 지식이 아직 깊지 않아서 클래스가 내부적으로 REPL에 의해 래핑되는 방식을 이해하려고 노력하고 있습니다.
이러한 개체를 평가하는 데 도움이되는 REPL 명령이 있습니까?
복제본 [.scala 프로그램을 실행할 때 실제로 스칼라 런타임/repl 뒤에 나오는 것은 무엇입니까?] (http://stackoverflow.com/questions/7655165/what-really-happens-behind-the-scala-runtime -repl-running-a-scala-program) – sschaef
내가 정말로 알고 싶어하는 것에 더 명확히 추가 할 것이다. 내부적으로 '객체'에 래핑되었을 때 클래스 정의가 유지되는지 확인하려고했습니다. 어쩌면 클래스에서 작동하고 메소드를 호출 할 수 있기 때문에 중요하지 않습니다. 나는 그 글을 전에 보았지만 그것이 나의 질문에 대한 정확한 대답이라고 생각하지 않았고 나는 나의 질문을 게시하는 것을 끝내었다. – ilango
질문을 작은 예제로 업데이트하여 원하는 것을 출력 할 수 있습니까? 나는 네가보고 싶은 것을 이해하지 못한다. – sschaef