プログラミング言語の三項演算子
Pythonの三項演算子の構文はPython-三項演算子で紹介した。他の言語ではどうなっているのか?、気になるところだ。
もはや三項演算子マニアと変幻した私、調べました。
C言語 三項演算子
まずは、その元祖だとわかったC言語から。
なんと、C言語、JIS規格化(JIS X 3010)されていた。せっかくなので、JSI規格から構文を確認。
1 2 3 4 5 |
6.5.15 条件演算子 構文規則 条件式: 論理OR式 論理OR式 ? 式 : 条件式 |
なんか、わかりずらい。いつものように記述すると
条件 ? 真の値 :偽の値
1 2 3 4 5 |
x = 7; y = 6; ret = x > y ?x :y; retは7 |
随分昔にC言語を利用していたが、三項演算子あったかなぁ?。使った記憶が全く無い。。。
Python 三項演算子
再掲ですが比較のためにPythonの構文です。
真の値 if 条件 else 偽の値
C言語とだいぶ違う。真の値を前にもってきているので、見やすさを意識したのか。またif,elseで記述するのも見やすさからと思われる。
Java 三項演算子
Java抜きでは語れません。ORACLEサイトへ行くと、Version19だと。。。確か半年に1回バージョンアップすると言っていたけど、本当にやってたんだ?誰得なの?
肝心の構文を探したが見つけることができない。ググって確認と思ったけど、ChatGPTに聞けばいいんだ(笑)
条件 ? 真の値 :偽の値
C言語と同じだ。ChatGPT君、例も教えてくれた。
ChatGPTの登場でGoogleがあせっているようだけど、理由がよくわかった。ちまちまと調べるより、ChatGPTに全部聞いちゃえばいいんじゃない?この調査も?
いやいや、ChatGPTは平気で嘘をつく、安易に任せてはいけない。続けよう!
PHP 三項演算子
さすがPHP、正式ドキュメントで一瞬にして確認できた(日本語です)。例も沢山載っているし、使用上の注意点まである。他の言語も参考にして欲しい(三項演算子だけに、、、)。せっかくなので、公式ドキュメントのリンクを張り付けておきます。
肝心の構文は・・・
条件 ? 真の値 :偽の値
C言語といっしょ。残念がることは無いのだが、なんか、残念・・・。
JavaScript 三項演算子
最近勢いがあるJavaScipt。こちらも瞬殺で確認できた。素晴らしいドキュメントだ。例があるどころか、実行できちゃう。こちらもせっかくなのでリンク張っておきます。
条件 ? 真の値 :偽の値
C言語といっしょです。うㇺ、、これ調査して意味あるのか、疑問が出てきた。ここまでPython以外は、全部C言語といっしょ、、、
いや、もうっちょとだけやってみよう。。
COBOL 三項演算子
予想外のCOBOLだ!。COBOLは古くから規格化されており現在JIS(X3002)でCOBOL-2011と呼ぶようだ、昔は74COBOL(多分1974年のANSI規格の意味)とか呼んでいた記憶があるが、COBOLも進化していただんなぁ・・・。いや、たそがれている場合ではない!使命を忘れるところだった。
構文 無し
Ruby 三項演算子
転職に有利かも知れないプログラミング言語を参考に、次はRubyを調査、確か日本の方が作成していたんだよね。
ありました。こちらも瞬殺で確認できた。ドキュメントは日本語です!
条件 ? 真の値 :偽の値
C言語といっしょ・・・。
Kotlin 三項演算子
公式ドキュメントらしきところで探したけど見つからない・・・。ここはChatGPTに聞いてみよう!
あれ、構文は、
条件 ? 真の値 :偽の値
となっているが、一例目の
if 条件 真の値 else 偽の値
と矛盾している。どうなっているのか。。。やはりChatGPT君、更生が必要なようだ。
しかしChatGPT君のお陰て思い出した。次の構文だった。
if 条件 真の値 else 偽の値
おおおー新しパターンじゃないかー。諦めなくてよかった。
まとめ
調査前から三項演算子マニアの欲望を満たすだけの無意味な調査だと認識はあった。しかーし!以外にも意味ある調査になった。まとめだ。
- 三項演算子の構文は、ほとんどの言語でC言語と同じ
- Python,Kotlinは、if,elseを使ってわかりやすさを追求している(たぶん、おそらく、知らんけ・・)
- JIS規格から構文を読み取るのは難しい
- ChatGPTはやっぱり嘘つきだ
以上