2006-09-07 Thu
Perlのハッシュスライスと配列スライスについてのメモ
夕方、研究室でPerlのハッシュスライスが話題にのぼった。
こういうネタで盛り上がるのは、さすが理系の研究室。
以下、おもにホワイトボードから転写。
Perlのハッシュスライスと配列スライスについて!!
以下は全て、式の左辺で使うと配列が返って来る。
| @array | @arrayという配列全体 |
| @array[0, 1, 2] | @arrayの添え字が0〜2番の要素の組 |
| @array[0..2] | @array[0, 1, 2]と同じ |
| @hash{ 'a','b','c' } | ハッシュ%hashの、キーがa,b,cの組 |
| @hash{@key} | 配列@keyをキーとするハッシュ%hashの要素の組 |
で、ここまでは基礎知識。
これらを応用すると
@hash{a,b} = (あ,い);
こんなことは当然できる。
ということは、
「@key=(a,b,c)」と「@val=(あ,い,う)」を用意して、
@hash{@key} = @val;
とすると、お手軽に@keyをキー、@valを要素とするハッシュ%hashが作れる!!
便利!!
他に、@arrayのユニークな要素だけをとるにはどうしたら良いか、
という話題も出てきた。
Rubyだと「array.uniq」みたいにできるけど、
Perl5だと「do{ my %h; grep{ !$h{$_}++ } @array }」とか必要で面倒。
でも、Perl6は「@array.uniq」できるよ。とか。
こういうPerlの話が沢山出てきてくれると楽しい。
List::UtilとかScalar::Utilも便利ですよ。と。






