トップ > Perl Tips > 条件分岐(if,unless)


 ■ 条件分岐(if,unless)

条件分岐というのは、「もし~だったら…する。」「もし~でなければ…する。」
といった、分岐のことです。

条件に合うか、合わないかは、真偽によって確かめます。
真偽についてに真偽のことは書いてあります。

それでは、この2つの使い方を見てみましょう。


<if>
(1) if (条件式) {実行文}
(2) if (条件式A) {実行文A} else {実行文B}
(3) if (条件式A) {実行文A} elsif (条件式B) {実行文B} … else {実行文x}

条件式というのは $x == 1 というような式です。
実行文というのは print "ABC"; といった処理部分です。

(1) 条件式が真なら実行文を実行します。偽なら何もしません。
(2) 条件式Aが真なら実行文Aを実行し、偽なら実行文Bを実行します。
(3) 条件式Aが真なら実行文Aを実行し、条件式Aが偽で条件式Bが真なら実行文Bを実行します。
elsifの条件式がすべて偽なら実行文xを実行します。



<unless>
(1) unless (条件式) {実行文}
(2) unless (条件式A) {実行文A} else {実行文B}
(3) unless (条件式A) {実行文A} elsif (条件式B) {実行文B} … else {実行文x}

(1) 条件式が偽なら実行文を実行します。真なら何もしません。
(2) 条件式Aが偽なら実行文Aを実行し、真なら実行文Bを実行します。
(3) 条件式Aが偽なら実行文Aを実行し、条件式Aも条件式Bも真なら実行文Bを実行します。
elsif節が複数ある場合は、条件式Aが真で、elsif節の条件式が真になったときに実行文を実行します。
elsif節がすべて偽なら実行文xを実行します。

(1),(2)はif文と反対の働きをしますが、(3)が少し複雑なので、表にまとめました。

条件式Aが真の場合(偽なら実行文Aを実行し、終了します)
当てはまらなければ下に進んでください。

1 条件式Bが真 実行文Bを実行し終了
2 途中のelsif節の条件式が真 そのelsif節の実行文を実行し終了
3 すべてのelsif節の条件式が偽 実行文xを実行し終了

unlessとelsifとelseの組み合わせはこのようにわかりにくいため、
ifを使うことが多いです。
(1) if ($x == 1) { print "1です"; } elsif ($x == 2) { print "2です"; } else { print "1でも2でもありません"; }
(2) unless ($x != 1) { print "1です"; } elsif ($x == 2) { print "2です"; } else { print "1でも2でもありません"; }
いずれも同じ結果になります。
$xが1なら「1です」と表示し、2なら「2です」と表示し、
どちらでもなければ「1でも2でもありません」と表示します。




トラックバック

このエントリーのトラックバックURL:
http://easycgi.xrea.jp/mt-tb.cgi/56