2011-03-31 7 views
1

나는 탁구가있는 the official guide에서 예제를 컴파일하려고합니다. Ping 클래스와 Pong 클래스를 기본 패키지에 자신의 파일에 넣었습니다. 그러나 Ping 클래스에는 Pong 클래스를 찾을 수 없다는 컴파일 오류가 있으며 그 반대의 경우도 마찬가지입니다. 나는 또한 재건이 일어날 수 있도록 프로젝트를 청소하려고 시도했지만 어떤 진보도 할 수 없다. 나는 here에서 2.8.1의 최종 버전을 사용 중입니다.스칼라에서 기본 액터 예제를 컴파일 할 수 없습니다.

내가 뭘 잘못하고 있니?

답변

4

pingpong.scala의 전체 소스는 TGZ에 scala-2.8.1.final-sources.tgz

위치에서 찾을 수 있습니다 : 스칼라 - 2.8.1.final - 소스/문서/예/배우/pingpong.scala

예는 가정 모든 클래스는 같은 파일에 있고

scalac pingpong.scala 

컴파일 할 수 있습니다하지만 당신은 별도의 파일에 넣어하기를 원한다면 :

Ping.scal을

import scala.actors.Actor 
import scala.actors.Actor._ 

case object Ping 
class Ping(count: Int, pong: Actor) extends Actor { 
    def act() { 
    var pingsLeft = count - 1 
    pong ! Ping 
    while (true) { 
     receive { 
     case Pong => 
      if (pingsLeft % 1000 == 0) 
      Console.println("Ping: pong") 
      if (pingsLeft > 0) { 
      pong ! Ping 
      pingsLeft -= 1 
      } else { 
      Console.println("Ping: stop") 
      pong ! Stop 
      exit() 
      } 
     } 
    } 
    } 
} 

Pong.scala

import scala.actors.Actor 
import scala.actors.Actor._ 

case object Pong 
class Pong extends Actor { 
    def act() { 
    var pongCount = 0 
    while (true) { 
     receive { 
     case Ping => 
      if (pongCount % 1000 == 0) 
      Console.println("Pong: ping "+pongCount) 
      sender ! Pong 
      pongCount = pongCount + 1 
     case Stop => 
      Console.println("Pong: stop") 
      exit() 
     } 
    } 
    } 
} 

pingpong.scala

case object Stop 

object pingpong extends Application { 
    val pong = new Pong 
    val ping = new Ping(100000, pong) 
    ping.start 
    pong.start 
} 

다음 실행 scalac * .scala

+0

감사합니다! 귀하의 소스를 통해 읽은 후 나는 사건 객체를 추가하는 것을 잊었습니다. – Geo

관련 문제