def !(message: Any)(implicit sender: ActorRef = Actor.noSender): Unit
final def tell(msg: Any, sender: ActorRef): Unit = this.!(msg)(sender)
这里的Actor.noSender的定义为
/**
* Default placeholder (null) used for "!" to indicate that there is no sender of the message,
* that will be translated to the receiving system's deadLetters.
*/
final val noSender: ActorRef = null
在
中,tell 方法的签名是
这里的Actor.noSender的定义为
如果在一个actor内部调用tell方法,noSender即为自己,如果在外部调用的话即为null.
另,在测试时, 可以显示指定消息的发送者为TestProbe,例如
这在测试需要接受来自多个不同的actor的消息的actor时非常有用。