どのようにユニークな要素のPerl一覧

課題です。 のプログラムのプログラミング言語Perlは、リストを作成します。 この一覧表に 文字列にする必要がある。 お得な価値を持つからこの一覧です。

ソリューションの機能 uniq からの図書館 List::Util

最も簡単なも便利な方法この問題を解決するために使用 機能 uniq 図書館から List::Util. この例のコード:

▶ Run
#!/usr/bin/perl

use List::Util qw(uniq);
use Data::Dumper;

my @arr = uniq('one', 'one', 'b', 'one', 'b', 4);

print Dumper \@arr;

保存されるとこのテキストのファイル script.plを実行し、コンソール perl script.pl, が表示される画面:

$VAR1 = [
          'one',
          'b',
          4
        ];

機能 uniq 保存の要素が正常に動作する場合のリストが undef.

このコードからPerl5.26. 以前のバージョンのPerlを含む のインタプリタのバージョンを図書館 List::Util が無い機能 uniq. ってもらうためには、 使用このソリューションは次のいずれかの操作が必要です更新Perlけ最新バージョン 図書館 List::Util.

公式文書

このスニペットの出力 perldoc List::Util の機能 uniq:

  uniq
        my @subset = uniq @values

    *Since version 1.45.*

    Filters a list of values to remove subsequent duplicates, as judged by a
    DWIM-ish string equality or "undef" test. Preserves the order of unique
    elements, and retains the first value of any duplicate set.

        my $count = uniq @values

    In scalar context, returns the number of elements that would have been
    returned as a list.

    The "undef" value is treated by this function as distinct from the empty
    string, and no warning will be produced. It is left as-is in the
    returned list. Subsequent "undef" values are still considered identical
    to the first, and will be removed.

自身の判断

うな書簡易版の機能 uniq からの図書館 List::Util:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

sub uniq {
     my (@values) = @_;

     my %h = map {$_ => 1} @values;

     return keys %h;
}

my @arr = uniq('one', 'one', 'b', 'one', 'b', 4);

print Dumper \@arr;

このコードを直ちに作品のバージョンでもPerlです。 こちらディズニーランドからの臨 uniq:

  • my (@values) = @_; —置引数が渡され、technologyの変動 @values
  • my %h = map {$_ => 1} @values; —各要素の @values がリストの要素を、最初の要素は、ユニットは、すべてのリストと一つのリストを割り当てることリストのハッシュ. ハッシュが順序付けのキー値です。 一方の鍵できる唯一の値です。 この物件のハッシュをすべて撤去された重複している。
  • return keys %h; —返されるリストのみからなるキー

と比較して機能 uniq 図書館から List::Utilの このコードの欠点:

  • 当社の機能 uniq を返します要素には任意です。 異なるのと同じコードが異なる結果によって返された値は、機能 uniq と同じものってあとは異なります)
  • 当社の機能は正常に動作しない場合のリストが undef. を使用していますべての値のリストとしてのハッシュ鍵となります。 と undef できないキーのハッシュ. ときに利用するようにして undef キーとして利用できる空の文字列ではなく undef.

その他の記事