Акторы управляются сообщениями, а input
подается на актера, как сообщения, отправленные на почтовый ящик . Чаще всего сообщения отправляются актеру через огонь-и-забыв tell
(т.е. !
), например:
myActor ! "test"
Метод receive
в субъекте позволяет сопоставлять шаблоны сообщений (как правило, по типу) для их соответствующей обработки. Метод имеет тип PartialFunction[Any, Unit]
, поэтому:
case
сопоставление с образцом, которое является частичной функцией, хорошо подходит в качестве инструмента проверки для эффективной обработки различных типов входящих сообщений
он может принимать сообщения любого типа, обрабатывать их любым необходимым способом и не должен ничего возвращать, например:
case i: Int => // do something with i
case s: String => // do something with s
// ...
Обратите внимание, что в случае необработанных сообщений под капотом в ActorSystem будет опубликовано UnhandledMessage()
.