如何将NetMQ中的ReceiveReady方法从C#转换为F#

如何将NetMQ中的ReceiveReady方法从C#转换为F#,c#,f#,c#-to-f#,netmq,C#,F#,C# To F#,Netmq,我正在使用一个没有F文档,只有C文档的库。我对C#不熟悉,有点麻烦。通读NetMQ,有一行我在翻译时遇到了问题: 关于上下文,以下是完整的示例: using (var rep1 = new ResponseSocket("@tcp://*:5001")) using (var rep2 = new ResponseSocket("@tcp://*:5002")) using (var poller = new NetMQPoller { rep1, rep2 }) { rep1.Rece

我正在使用一个没有F文档,只有C文档的库。我对C#不熟悉,有点麻烦。通读NetMQ,有一行我在翻译时遇到了问题:

关于上下文,以下是完整的示例:

using (var rep1 = new ResponseSocket("@tcp://*:5001"))
using (var rep2 = new ResponseSocket("@tcp://*:5002"))
using (var poller = new NetMQPoller { rep1, rep2 })
{
    rep1.ReceiveReady += (s, a) =>    // ??????
    {
        string msg = a.Socket.ReceiveString();
        a.Socket.Send("Response");
    };
    rep2.ReceiveReady += (s, a) =>    // ??????
    {
        string msg = a.Socket.ReceiveString();
        a.Socket.Send("Response");
    };

    poller.Run();
}
具体来说,我不知道在C的上下文中,
rep1.ReceiveReady+=(s,a)=>
意味着什么,也不知道如何将其翻译成F。有什么想法吗? 谢谢。

rep.ReceiveReady+=(s,a)=>{/*…*/}
使用lambda函数订阅
ReceiveReady
事件。这是一个直接的F#翻译:

use rep1=new ResponseSocket(“@tcp://*:5001”)
使用rep2=newresponsesocket(@tcp://*:5002)
使用poller=new NetMQPoller()
轮询器。添加rep1
轮询器。添加rep2
rep1.ReceiveReady.Add(fun a->let msg=a.Socket.ReceiveString()
a、 套接字。发送“响应”)
rep2.ReceiveReady.Add(fun a->let msg=a.Socket.ReceiveString()
a、 套接字。发送“响应”)
poller.Run()
有关F#中事件处理的更多信息,请参阅。然而,请注意,F#也可以将事件视为可观察事件,这可能被认为更为惯用使用lambda函数订阅
ReceiveReady
事件。这是一个直接的F#翻译:

use rep1=new ResponseSocket(“@tcp://*:5001”)
使用rep2=newresponsesocket(@tcp://*:5002)
使用poller=new NetMQPoller()
轮询器。添加rep1
轮询器。添加rep2
rep1.ReceiveReady.Add(fun a->let msg=a.Socket.ReceiveString()
a、 套接字。发送“响应”)
rep2.ReceiveReady.Add(fun a->let msg=a.Socket.ReceiveString()
a、 套接字。发送“响应”)
轮询器。运行()

有关F#中事件处理的更多信息,请参阅。但是,请注意,F#也可以将事件视为可观察事件,这可能被认为更为惯用。

请参见我的回答:有关=>operator@CamiloTerevinto:这与expression Body成员无关,这只是一个lambda…我是NetMQ的作者,很高兴您正在使用NetMQ并找到了答案。您可以通过添加F#文档或一些示例来为项目做出贡献。这是一个很棒的库。实际上,在某些情况下,NetMQ文档比Zguide对某些概念提供了更好的解释。我很有可能在将来提供一些F#的例子。感谢您的出色工作。请在此处查看我的答案:有关=>operator@CamiloTerevinto:这与expression Body成员无关,但这只是一个lambda…我是NetMQ的作者,很高兴您使用NetMQ并找到了答案。您可以通过添加F#文档或一些示例来为项目做出贡献。这是一个很棒的库。实际上,在某些情况下,NetMQ文档比Zguide对某些概念提供了更好的解释。我很有可能在将来提供一些F#的例子。谢谢你的出色工作。