このような「make_members」メソッドがあるとします。
sub make_members {
my ($number_members) = @_;
my $rows = SomeDBIModule->select();
my $count = @$rows;
for ( my $i = $count + 1; $i < $count + 1 + $number_members; $i++ ) {
$rows->insert(
name => "name".$i,
type => "A",
created_at => time,
);
}
}
ここまでは順調ですね。ここで、メソッドが入力として受け取ることができると想像してください。ユーザーの数は、必要なタイプ a、タイプ b、およびタイプ c です。
sub make_members {
my ($number_members, $n_members_type_a, $n_members_type_b, $n_members_type_c) = @_;
#....
これを書いて最初に頭に浮かぶのは、3 つのループを作成することです。最初の1つ
for ( my $i = $count + 1; $i < $count + 1 + $n_members_type_a; $i++ ){
$rows->insert(
name => "name".$i,
type => "A",
#....
$count + 1 と $n_members_type_b の間の 2 つ目。$count + 1 と $n_members_type_c の間の 3 つ目。
それは長すぎてひどいように見えます。これを書くより良い方法はありますか?