最近はperlやってるけど
何度やってもいまいちとっつきにくいmapとgrepについてメモメモ
特徴
・なんらかのリストに対して要素を順番に処理したリストを返す
・なんらかのリストから取り出した値を変えると、元のリストの要素も書き換わる
・map(grep)関数内では、リストから取り出した値を局所的に$_にセットする
と、書いたものの実際に試した感じをメモ
まずは普通にforeachでループ
my @array = ( 1, 2, 3, 4, 7 ); foreach my $val (@array){ print "$val\n"; }
出力結果
1 2 3 4 7
。。。まぁ、そりゃそうだね
次にmap
# @arrayの各要素を2倍したリストを返却 my @array = ( 1, 2, 3, 4, 7 ); # 書き方1 my @ret = map{ $_ * 2; } @array; # 書き方2 my @array = ( 1, 2, 3, 4, 7 ); my @ret = map{ $_ * 2 } @array; # 書き方3 my @array = ( 1, 2, 3, 4, 7 ); my @ret = map $_ * 2 ,@array;
@retの出力結果
2 4 6 8 14
次にgrep
# @arrayの各要素のうち偶数のものを返却 my @array = ( 1, 2, 3, 4, 7 ); # 書き方1 my @ret = grep{ $_ % 2 == 0; }@array;
@retの出力結果
2 4
@retを$retで受け取ると該当するリストの個数を返してくれるみたい
とりあえずのメモで