空の配列が空の配列か確認する方法は?
次のHokkaido.pm Casualのネタに良いなーって思って見てたんだけど、
テストを通すだけなら、こんな感じだと思います。
perlの複数の配列をこんな風に並び替えたいんです – 鈍足ランナーのIT日記
http://dokechin.hatenablog.com/entry/2014/03/07/213446
package Sort { use strict; use warnings; sub sort { my @sorted; my $total = 0; for my $item(@_){ $total = $total + scalar(@$item); } until( $total == scalar @sorted){ foreach (@_) { if (my $hit = shift (@$_)){ push @sorted , $hit; } } } return @sorted; } } use Test::More; use Sort; my $aaa = [1,3]; my $bbb = [1,3]; my $ccc = [1,3,5]; my $ddd = [1,3,4,8]; my @expected = ( 1,1,1,1,3,3,3,3,5,4,8); is(Sort::sort ($aaa,$bbb,$ccc,$ddd), @expected, "sort 4 list"); my @got = Sort::sort ([],[]); is_deeply( \@got, [], "sort 2 list empty"); done_testing;
追記 2014/03/11
配列を期待する書き方って意味では、これでも良さそう。
余計な代入もなくなって、こっちの方が良いですね。
package Sort { use strict; use warnings; sub sort { my @sorted; my $total = 0; for my $item(@_){ $total = $total + scalar(@$item); } until( $total == scalar @sorted){ foreach (@_) { if (my $hit = shift (@$_)){ push @sorted , $hit; } } } return @sorted; } } use Test::More; use Sort; my $aaa = [1,3]; my $bbb = [1,3]; my $ccc = [1,3,5]; my $ddd = [1,3,4,8]; my @expected = ( 1,1,1,1,3,3,3,3,5,4,8); is(Sort::sort ($aaa,$bbb,$ccc,$ddd), @expected, "sort 4 list"); is_deeply( [Sort::sort ([],[])], [], "sort 2 list empty"); done_testing;
他にも良い方法があれば、ネタ元へどうぞ。
おしまい。
Leave a Comment