F# 为什么actorOf函数**不**需要具有*Actor<_>;*作为参数?

F# 为什么actorOf函数**不**需要具有*Actor<_>;*作为参数?,f#,akka.net,F#,Akka.net,Akka.Net: let consoleWriterActor = spawn myActorSystem "consoleWriterActor" (actorOf Actors.consoleWriterActor) let consoleReaderActor = spawn myActorSystem "consoleReaderActor" (actorOf2 (Actors.consoleReaderActor consoleWriterActor)) let consoleRe

Akka.Net:

let consoleWriterActor = spawn myActorSystem "consoleWriterActor" (actorOf Actors.consoleWriterActor)
let consoleReaderActor = spawn myActorSystem "consoleReaderActor" (actorOf2 (Actors.consoleReaderActor consoleWriterActor))

let consoleReaderActor (consoleWriter: IActorRef) (mailbox: Actor<_>) message = 
    ...

let consoleWriterActor message = 
    ...
为什么actorOf函数需要一个包含参与者作为参数的函数输入

actorOf2函数似乎确实需要一个Actor参数

如何调用这些函数的上下文如下:

let consoleWriterActor = spawn myActorSystem "consoleWriterActor" (actorOf Actors.consoleWriterActor)
let consoleReaderActor = spawn myActorSystem "consoleReaderActor" (actorOf2 (Actors.consoleReaderActor consoleWriterActor))

let consoleReaderActor (consoleWriter: IActorRef) (mailbox: Actor<_>) message = 
    ...

let consoleWriterActor message = 
    ...
让consoleWriterActor=生成myActorSystem“consoleWriterActor”(actorOf Actors.consoleWriterActor)
让consoleReaderActor=spawn myactor系统“consoleReaderActor”(actorOf2(Actors.consoleReaderActor consoleWriterActor))
让consoleReaderActor(consoleWriter:IActorRef)(邮箱:Actor)消息=
...
让consoleWriterActor消息=
...
actorOf的签名如下:

('Message -> unit) -> Actor<Message> -> Cont<'Message,'Returned>
(Actor<Message> -> 'Message -> unit) -> Actor<Message> -> Cont<'Message,'Returned>
('Message->unit)->Actor->Cont
actorOf2的签名如下:

('Message -> unit) -> Actor<Message> -> Cont<'Message,'Returned>
(Actor<Message> -> 'Message -> unit) -> Actor<Message> -> Cont<'Message,'Returned>
(Actor->'消息->单元)->Actor->Cont
结论:

let consoleWriterActor = spawn myActorSystem "consoleWriterActor" (actorOf Actors.consoleWriterActor)
let consoleReaderActor = spawn myActorSystem "consoleReaderActor" (actorOf2 (Actors.consoleReaderActor consoleWriterActor))

let consoleReaderActor (consoleWriter: IActorRef) (mailbox: Actor<_>) message = 
    ...

let consoleWriterActor message = 
    ...
我是Akka.net的新手。
因此,我不明白为什么“Actor”参数(我认为它代表一个邮箱)对actorOf函数没有用处。

actorOf2
函数采用一个
Actor
参数,它代表一个Actor执行上下文(来自F#
MailboxProcessor
它通常被称为邮箱)。它允许更改参与者生命周期、创建子参与者或与消息发送者通信等操作


但是,有时您可能希望创建actor,它被设计为作为数据的简单接收器,即处理消息并将结果推送到某些外部服务中。这就是
actorOf
可能有用的地方。

actorOf2
函数接受一个
Actor
参数,该参数表示一个Actor执行上下文(来自F#
MailboxProcessor
它通常被称为邮箱)。它允许更改参与者生命周期、创建子参与者或与消息发送者通信等操作

但是,有时您可能希望创建actor,它被设计为作为数据的简单接收器,即处理消息并将结果推送到某些外部服务中。这就是
actorOf
可能有用的地方