第86回 スライス

みんな、Perlの配列の要素にアクセスするときは、

@ を $ に変えないといけないぞ!!!!!


注意! 注意! またまた注意!!

my @c = ('a','b','c');
my $e = $c[0];

こうだぞぉおおおお!!

となるわけなんですが........

本当?

じゃあ、 @のままでアクセスするとどうなるのでしょうか?

use strict;

my @c = ('a', 'b', 'c');

print @c[1], "\n";

my $d = @c[2];
print $d, "\n";

結果:

b
c

な、な、な、なんだってぇえええええええええ!!
うまくいってるんじゃないかぁああ!?


と、なっちゃうわけなんですが、
これ実は「スライス」と呼ばれるもの。

スライス

例えば、ある配列があって、その配列から、添字が1の要素と2の要素だけ持った配列を作りたいとします。


すると、Perlでは、こんな風に書けます。

use strict;
use Data::Dumper;

my @c = ('a','b','c','d','e');

my @e = @c[1,2];
print Dumper \@e;


結果:

$VAR1 = [
          'b',
          'c'
        ];


スライスは、本来、1つの要素をとってくるためにあるのではなくて、
たくさんの値を持って来るときに使います(今回は、添字が1と2の要素が欲しい!)。
このスライスを複数の値をとってくるのに用いず、1つの値をとってくるのにやっちゃったのが、始めにためしたソースというわけなのでした。