2

次のスニペットがどのように機能するかを正確に理解できません。

my $str = 'abc def ghi';
my $num = () = $str =~ /\w+/g;
say $num; # prints the word count, 3

$str =~ /\w+/gどうやら左端の割り当てに伝えられている単語のリストを返すことを私は知っています。次に$num、そのリストにスカラー コンテキストを課し、3 になります。

しかし、どういう() = ('abc', 'def', 'ghi')意味ですか?のようなものmy $a = my @b = (3, 5, 8)ですか?もしそうなら、一番右のリストはどのように$numして一番左に転送されますか?

4

2 に答える 2

2

最近では、Perl を学び始める人が少なくなっています。その理由の 1 つは、あなたの例のようなあいまいなコードが含まれていることです。サターンの perlsecret ページを確認してくださいhttps://metacpan.org/pod/distribution/perlsecret/lib/perlsecret.pod#Goatse

=( )=

(別名:「土星」)

このオペレーターの名前がわからない場合は、幸運だと考えてください。インターネットで視覚的な説明を検索しないことをお勧めします。

goatse 演算子は、右側にリスト コンテキストを提供し、左側に要素の数を返します。左辺はスカラー コンテキストを提供する必要があることに注意してください。明らかに、左側のリスト コンテキストは真ん中に空のリストを受け取ります。

説明は、スカラーコンテキストでのリスト割り当ては、実際に変数に割り当てられた要素の数に関係なく、割り当ての右側にある要素の数を返すということです。この場合、右側のすべての要素は単に空のリストに割り当てられます (したがって、破棄されます)。

于 2020-04-28T16:42:09.957 に答える