如何将 NetMQ 中的 ReceiveReady 方法从 C# 转换为 F#
How to translate ReceiveReady method in NetMQ from C# to F#
我使用的库没有 F# 文档,只有 C#。由于不熟悉 C#,我遇到了一些麻烦。通读 NetMQ 的 documentation,有一行我在翻译时遇到了问题:
对于上下文,这里是完整的例子:
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();
}
具体来说,我不知道 rep1.ReceiveReady += (s, a) =>
在 C# 上下文中的含义以及如何将其转换为 F#。有任何想法吗?
谢谢
rep.ReceiveReady += (s, a) => { /*...*/ };
正在使用 lambda 函数订阅 ReceiveReady
事件。这是直接的 F# 翻译:
use rep1 = new ResponseSocket("@tcp://*:5001")
use rep2 = new ResponseSocket("@tcp://*:5002")
use poller = new NetMQPoller()
poller.Add rep1
poller.Add rep2
rep1.ReceiveReady.Add (fun a -> let msg = a.Socket.ReceiveString ()
a.Socket.Send "Response")
rep2.ReceiveReady.Add (fun a -> let msg = a.Socket.ReceiveString ()
a.Socket.Send "Response")
poller.Run ()
可以在 the documentation 中找到有关 F# 中事件处理的进一步阅读。但请注意,F# 也可以将事件视为可观察对象,这可能被认为更符合惯用语。
我使用的库没有 F# 文档,只有 C#。由于不熟悉 C#,我遇到了一些麻烦。通读 NetMQ 的 documentation,有一行我在翻译时遇到了问题:
对于上下文,这里是完整的例子:
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();
}
具体来说,我不知道 rep1.ReceiveReady += (s, a) =>
在 C# 上下文中的含义以及如何将其转换为 F#。有任何想法吗?
谢谢
rep.ReceiveReady += (s, a) => { /*...*/ };
正在使用 lambda 函数订阅 ReceiveReady
事件。这是直接的 F# 翻译:
use rep1 = new ResponseSocket("@tcp://*:5001")
use rep2 = new ResponseSocket("@tcp://*:5002")
use poller = new NetMQPoller()
poller.Add rep1
poller.Add rep2
rep1.ReceiveReady.Add (fun a -> let msg = a.Socket.ReceiveString ()
a.Socket.Send "Response")
rep2.ReceiveReady.Add (fun a -> let msg = a.Socket.ReceiveString ()
a.Socket.Send "Response")
poller.Run ()
可以在 the documentation 中找到有关 F# 中事件处理的进一步阅读。但请注意,F# 也可以将事件视为可观察对象,这可能被认为更符合惯用语。