非常にシンプルなように見えますが、そのほとんどを理解しました。 Perlなどの見する構文で緩んでいる。しかし、それはこれが右はperldocのWebサイトからであるに:)このperlスクリプトを理解しようとしています
my @unique =();
my %seen =();
foreach my $elem (@array) {
next if $seen{ $elem }++;
push @unique, $elem;
}
権利をジャンプする新人のために困難です。私が正しく理解していれば、それはのように書くこともできます。
my @unique =();
my %seen =();
my $elem;
foreach $elem (@array) {
if ($seen{ $elem }++) {
next;
}
push (@unique, $elem);
}
したがって、この時点での私の理解では、次のとおりです。
- ユニーク
- という名前の配列が
- 宣言を見て名前のハッシュを宣言宣言しますelemという名前の変数
- 各繰り返しは$ elemに格納されます。
- $ elemがハッシュのキー
- :%私は2つのことを欠けている@Unique
の最後に次の反復
- 追加の$ ELEMにスキップし、(私は
++
が何をするか分からない)見何も%で保存されていますか?私は疑う$seen{ $elem }++
:私は問題はこの部分であることを知ってい++(それがインクリメント他のすべての言語で、私はそれがどのように機能するかを見ていけない)やる
何
おかげ
ああ私は何か魚が巻き込まれていると思った。多くの自動化されたコードを書くのは良い習慣ですか?それとも、それを長い道のりで書く方が良いでしょうか? – n0pe
@MaxMackie:Perlにコード化された理由は、Larry Wallがそれが役に立つパターンであることを知っていたからです。一度あなたがそれを知っている、それは多くの意味があります。このようなコードでは、ハッシュ値の数値演算しか行っていないので、ハッシュの値を0で始まったかのように扱うのが理にかなっています。真(ゼロ以外)、決してこれは大丈夫な仮定であり、コードを単純化することができます。 –
完璧、あなたの助けに感謝します。私は2分で受け入れます。 – n0pe