Простой пример для актеров - PullRequest
1 голос
/ 03 июля 2011

Я почти наверняка делаю что-то глубоко глупое, из-за чего этот актер не работает должным образом, но я не вижу этого после того, как на него смотрят. Поэтому я решил спросить ТАК.

Я не могу заставить этот код работать - в этом случае, если я отправляю ему сообщения, такие как 4 (что должно вызвать случай по умолчанию), ничего не печатается, и я не могу отключить монитор, отправив ему температуру тревога.

Что я делаю не так?

class TemperatureMonitor extends Actor {
  var tripped : Boolean = false
  var tripTemp : Double = 0.0

  def act() {
    while (true) {
      receive {
        case Heartbeat => 0
        case TemperatureAlarm(temp) =>
          tripped = true
          tripTemp = temp
        case _ => println("No match")
      }
    }
  }
}

1 Ответ

5 голосов
/ 03 июля 2011

Поскольку вы не показываете, как вы создаете актера, мы можем только догадываться.Первое, что я хотел бы проверить, это то, что вы начали актера:

val monitor = new TemperatureMonitor
monitor.start
monitor ! 4 // should trigger the default case, as you say
...