как новый объект будет создаваться каждый раз, что не то, что вы после. Я думаю, что должен быть лучший шаблон проектирования, чем передача актеров, на которые ссылаются, в конструкторе.

я есть сценарий, где у меня есть некоторые объекты, которые должны брать ссылки друг от друга. Единственный способ получить это для компиляции - использоватьленивый

class A(b:B)
class B(a:A)
lazy val a:A = new A(b)
lazy val b:B = new B(a)

Я могу сделать то же самое, используя некоторые актеры, и заставить его компилировать также

    abstract class Message
    case class Message1 extends Message
    case class Message2 extends Message

    class Actor1(otherActor:Actor) extends Actor {
        def act() {
            loop {
                react {
                    case Message1 =>
                        println("received message1")
                        otherActor ! Message2
                    case _ =>
                }
            }
        }
    }

    class Actor2(otherActor:Actor) extends Actor {
        def act() {
            loop {
                react {
                    case Message2 =>
                        println("received message2")
                        otherActor ! Message1
                    case _ =>
                }
            }
        }
    }

    lazy val actor1:Actor = new Actor1(actor2)
    lazy val actor2:Actor = new Actor2(actor1)

Однако, когда я добавляю следующее:

    actor1.start
    actor2.start
    actor1 ! Message1

Я получаю следующую ошибку:

Исключение в потоке "main" java.lang.NoClassDefFoundError: com / fictitiousCompany / stackOverflowQuestion / Test. Вызвано: java.lang.ClassNotFoundException: com.fictitiousCompany.stackOverflowQuestion.Test at java.net.URLCl2 . AppClassLoader.loadClass (Launcher.java:301) в java.lang.ClassLoader.loadClass (ClassLoader.java:248)

Я использую плагин Scala Eclipse 2.8.1.

Ответы на вопрос(1)

Ваш ответ на вопрос