0

したがって、私は perl にかなり慣れていないため、次のコードに示されている基本的な概念を理解したいと考えています。

while (my ($key,$val)=each%{$vec1}){
    $num += $val*($$vec2{$key} || 0);
}

ここで、vec1、vec2 は連想配列です。私は特に何が起こっているのか理解したい:

each%{$vec1} and $$vec2{$key}

ハッシュの参照/逆参照と関係があることはわかっていたので、次のリンクを見つけました: http://www.thegeekstuff.com/2010/06/perl-hash-reference/、しかし何が起こっているのかよくわかりませんの上。

前もって感謝します。

4

3 に答える 3

2

$vec1ハッシュへの参照です。%{$vec1}このハッシュを取得します。ハッシュに適用するeachと、後続の呼び出しで (キー、値) のペアが得られます。

$vec2{$key}vec2keyの hash の値です$key。この値自体が参照であり、追加の $ によって逆参照されます。

于 2013-03-09T08:24:19.397 に答える
1

each%{$vec1}

$vec1スカラーハッシュ参照です。

%{$vec1}それを逆参照します。

最後に、ペアをeach%{$vec1}返します。key-value


$$vec2{$キー}

$keykeyhashの aです$vec2

したがって、のキーに$vec2{$key}する必要がありますvalue$key

最後に、$$vec2{$key}scalar の参照の逆参照です$vec2{$key}

于 2013-03-09T08:24:01.940 に答える
0

each%{$vec1}

$vect はハッシュへの参照であり、ハッシュをeach反復処理するため、構文を使用する場合は参照解除する必要があり%{$vec1}ます。eachハッシュの次の要素のキーと値で構成される 2 要素のリストを返します。

$$vec2{$key}

$vec2 変数の定義とそれに格納している要素の種類はわかりませんが、これはハッシュ%vec2であり、数値へのスカラー参照を格納しているようです

于 2013-03-09T08:26:19.160 に答える