みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

perl 条件演算子 範囲演算子についてです

演算子

条件演算子

条件演算子 ?: は条件式の値により、2者のうちのどちらかを選択します。

$a=($x<10)?10:20;
変数$aの値が$x<10という条件において、真であれば:左側の10を選び、偽であれば:右側の20を選ぶ。

$a=10;
変数$aに10を代入する。

$a==5?print "5です。\n":print "5ではありません。\n";
条件式でaが5であれば:左側の print "5です。\n"を表示します。
条件式でaが5でなければ:右側の print "5ではありません。\n"を表示します。

$a==10?print "10です。\n":print "10ではありません。\n";
条件式でaが10であれば:左側の "10です。\n" を表示します。
条件式でaが10でなければ:右側の "10ではありません。\n" を表示します。

範囲演算子

範囲演算子 .. は、左側の値から右側の値まで、1つずつ増やした値の集まりです。
値には、半角英数字の数値または文字列が指定できる。

print 3..5;
3 4 5 と表示する。

一応、訳を下に書いたのですが合っていますでしょうか。

投稿日時 - 2006-07-30 17:57:40

QNo.2309079

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

?:が演算子である所以を考えると、「選択する」と覚えるよりも、「値を返す」と覚えたほうが良いです。
実際、標準添付のドキュメントperlopでは、“returned”と表現されてますし。

>$a==5?print "5です。\n":print "5ではありません。\n";

例題としては適切でないかも。素直にif文を使うのが真っ当でしょうから。
演算子としての使い方でなら、こう書くほうが教育的かと:

print '$aは5で', $a==5 ? 'す' : 'ありません', "。\n";

範囲演算子については、コンテキストがスカラーかリストで動作が変わる事を覚えといたほうが良いでしょう。

演算子に関しては、評価順序(優先順位)やコンテキスト、戻り値の型とかそういった部分についても常に意識して勉強したほうが良いです。

> print 3..5;
> 3 4 5 と表示する。

――なんて書いても、リストコンテキストを評価した結果として、このように表示されている事を理解してるか伝わってこないですよ。
実際の結果は「345」になりますし。

投稿日時 - 2006-07-30 19:37:50

あなたにオススメの質問