gpt4 book ai didi

promise - perl6 如何获得 promise 的特定身份?

转载 作者:行者123 更新时间:2023-12-04 22:43:11 25 4
gpt4 key购买 nike

我正在尝试编写 3 个在 promise 中运行的回显服务器,但我想知道哪个 promise 正在执行回显。有没有办法做到这一点?

no strict;

for 0 .. 2 -> $index {
@result[$index] = start {
$myID = $index;
say "======> $myID\n";

my $rsSocket = IO::Socket::INET.new:
localhost => 'localhost',
localport => 1234 + $index,
listen => 1;

while $rsSocket.accept -> $rsConnection {
say "Promise $myID accepted connection";
while $rsConnection.recv -> $stuff {
say "promise $myID Echoing $stuff";
$rsConnection.print($stuff);
}
$rsConnection.close;
}
}
}

await @result;

echo 服务器运行正常;用“nc”测试;

问题是 $myID变成 2在创建 promise 之后,我无法判断哪个 promise 正在执行当前的回显。看来 $myID被所有的 promise 使用;有没有办法创建特定于单个 promise 的变量?

最佳答案

这是您与 no strict 一起“失去”的一件事.

您需要的是词法范围。使用 my每次输入块( { ... } )时都会给你一个不同的变量。

如果你这样做:

for 0 .. 2 -> $index {
@result[$index] = start {
my $myID = $index;

然后 $myID将是本地的 start块,每次调用该块时,它都会记住它的 id。因此,每当套接字接收数据时,您都会获得正确的 ID。

关于promise - perl6 如何获得 promise 的特定身份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39034367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com