Coroの初歩的なハマリどころ
時代は、Coroだ!AnyEventだ!ということで、
あたりを読みながらお勉強しているときに、ちょいハマった。
use strict;
use warnings;
use Coro;
use Perl6::Say;
async {
say 'hello';
}
cede;
use warnings;
use Coro;
use Perl6::Say;
async {
say 'hello';
}
cede;
このスクリプトを動かすと、
hello
と出力されるはず、なのに何も表示されない。こんな単純なコードなのに、なぜだー!と思ってよく見たら、 async の最後のセミコロンが抜けてた・・・
これなら動く。
use strict;
use warnings;
use Coro;
use Perl6::Say;
async {
say 'hello';
};
cede;
use warnings;
use Coro;
use Perl6::Say;
async {
say 'hello';
};
cede;
でも何で構文エラーにならないんでしょう?async は
async {
print "@_\n";
} 1,2,3,4;
print "@_\n";
} 1,2,3,4;
というように、引数を受け取ることができるので、もしかして cede が引数として渡されてる?と思ったけど、
async {
say @_;
}
cede;
cede;
say @_;
}
cede;
cede;
とやっても
cede
とは出力されない。Coroのコードを読んでも良くわからなかった。何で・・・??
About this entry






No Trackbacks
trackback uri:コメントやトラックバックは承認待ちになる場合がありますので、すぐに反映されない場合はしばらくお待ちください。