
Embarcadero は、Delphi(および RAD Studio)の新バージョン(開発コード名 Ganymede、現在ベータ版)に取り組んでいます。このブログ記事と今後の記事では、このリリースの魅力的な新機能の一部をご紹介していきます。このブログ記事は、RAD Studio ソフトウェアのプレリリース版に基づいています。製品のGAリリースまで、機能はコミットされません。
Delphi言語とそのコンパイラの改良点に加え、RAD Studio 13リリースでは、Object Pascal言語に条件演算子(または三項演算子)が初めて導入されます。これは、お客様から長年にわたり最もご要望の多かった言語機能強化の一つであり、この機能は現在のGanymedeベータ版でテスト用にご利用いただけます。
Table of Contents
Delphi には、新しい形式の If キーワードを使用した三項演算子が追加されました
三項演算子は、条件と2つの可能な値を持ち、if 文のように動作する演算子です。他の多くのプログラミング言語では、三項演算子は ?:
という構文で表されます。 Delphi では、使い慣れた Pascal 指向の構文を可能な限り維持したいと考え、if
記号を演算子として使用することにしました。つまり、if
は、ソースコード内の位置に応じて、文または演算子を示すために使用できるようになりました。
これは、単純な代入式の 2 つのバージョンの例です。1 つ目は従来の if 文 に基づくもので、2 つ目は if 演算子 に基づくものです。
1 2 3 4 5 6 7 8 |
// 従来の if 文 if Left < 100 then X := 22 else X := 45; // if 演算子による代入 X := if Left < 100 then 22 else 45; |
重要な違いは、if 演算子が、以下のように任意の式の一部として使用できることです。
1 |
ShowMessage (if Left < 100 then 'Small' else 'Big') |
ここでは、RAD Studio 13 ベータ版を使用して、64 ビット版 RAD Studio IDE のエディタでこのコードを確認できます。

RAD Studio 13 エディタ(IDE の 64 ビット版)における if 演算子の動作
Delphi の三項演算子における互換性のルールとは何ですか?
2つの部分式の型間の一貫性については、特定のルールがあります。つまり、それらは同じ型、または直接代入可能な型である必要があります。そうでない場合、以下の例のようにコンパイラエラーが発生します。
[dcc64 エラー] Unit1.pas(46): E2010 'string' と 'Integer' には互換性がありません

if 演算子の非互換性エラーの例
ベータ版ドキュメントには、新しい if
式で使用できるさまざまな type
の組み合わせと、それぞれの組み合わせにおける式の結果の型を記載した非常に長い表があります。数ページにわたる内容であり、ここで紹介するには詳細すぎる内容であるため、ここでは割愛します。
Delphi の三項演算子の優先順位は?
式内で if-then-else 演算子を使用する場合、他の演算(加算など)の方が優先順位が高く、予期しないエラーが発生する可能性があることに注意してください。優先順位の低いブール演算子を使用する場合と同様に、括弧を追加してください。次のコードを見てみましょう:
1 |
ShowMessage (if Left < 100 then 'Small' else 'Large' + 'Nice') |
Left
が 100 未満の場合は、出力はどうなりますか? “Small” でしょうか、それとも “SmallNice” でしょうか?前者です。+
の方が優先度が高いため、次のようになります。
1 |
ShowMessage (if Left < 100 then 'Small' else ('Large' + 'Nice')) |
常に追加の単語を追加したい場合は、次のように記述します。
1 |
ShowMessage ((if Left < 100 then 'Small' else 'Large') + 'Nice') |
RAD Studio 13 では、Delphi 言語に数多くの新機能と最新化が導入されます
これは RAD Studio 13 における Delphi 言語への唯一の変更点ではありませんが、今回導入する言語変更の中でも最も顕著で、多くの要望の多かった変更点の一つです。他にも新しい演算子や、新規および拡張されたコンパイラディレクティブが追加されます。全体として、Delphi 13(RAD Studio 13 の一部)は、Delphi Object Pascal 言語の進化にとって非常に重要なリリースとなるでしょう。ご期待ください!
このブログ記事は、RAD Studio ソフトウェアのプレリリース版に基づいています。製品のGAリリースまで、機能はコミットされません。

ぜひ RAD Studio の無料トライアル版を今すぐダウンロードして、Windows、macOS、Linux、iOS、Android で動作するクロスプラットフォームアプリを単一のコードベースから作成できる、最も高速で簡単、そして効率的な方法である理由を実感してください。
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition