第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つの値をとってくるのにやっちゃったのが、始めにためしたソースというわけなのでした。