選択肢 A
選択肢 B
選択肢 C
選択肢 D
選択肢 E
選択肢 F
と言う選択肢6個を用意して、選択された内容に応じて
以下のような分岐条件にしたい場合どのような方法が最適でしょうか?
●6個選択された場合 → 結果1
●5個選択された場合 → 結果2
●0個の場合 → 結果3
●1~4個選択された場合 → 結果4
(1個の場合で、Aの場合はだけ → 結果5)
ご教授のほどよろしくお願いします。
my $cnt = 0;
(選択肢 Aの論理式) and $cnt++;
(選択肢 Bの論理式) and $cnt++;
(選択肢 Cの論理式) and $cnt++;
(選択肢 Dの論理式) and $cnt++;
(選択肢 Eの論理式) and $cnt++;
(選択肢 Fの論理式) and $cnt++;
$cnt == 6 and (結果1);
$cnt == 5 and (結果2);
$cnt == 0 and (結果3);
$cnt < 5 and (結果4);
でいいんじゃないかと思います。
もっと短くもできるでしょうけど可読性と趣味しだいかと。
後半部の評価回数を減らしたければif,elsifで分岐させればよいです。
コメント(2件)
ご回答頂きありがとうございました。
お礼を書く前に閉めてしまったのでこちらで失礼します。
正しくは、たとえば
if ($cnt == 0 ){
結果3
}else{
結果1 if $cnt == 6;
結果2 if $cnt == 5;
結果4 if $cnt < 5;
}
みたいな感じです。もちろんswitchモジュールつかってもいいですけど。