未定義値との比較

ORDA やクラスなどのオブジェクトが登場して以来、未定義 (undefined) 値を扱うことが多くなりました。

もっと簡単に扱えるようにしてほしいという声もあり、v20 からは、どんな型の値でもエラーなしに未定義値と比較できるようにしました。

通常 4D では、比較演算子 =、#、>、<、>=、<= は、それぞれのオペランドの型と値をチェックします。もし、2つのオペランドの型が異なる場合、比較はエラーを生成します:

前述のように、クラスやオブジェクトを扱うにあたっては、未定義の値も扱う必要が出てくるため、このルールをより柔軟なものにしました。v20 からは、すべての変数型で未定義値を比較することができます:

  • 未定義の変数と null または未定義の値を比較する場合にのみ、= による比較は true を返し、それ以外の場合には false を返します:
$o:=new object
If ($o.undefined =10)
  ...
else
  // $o.undefined は未定義であるため、false が返されます
  ...
End if
  • 未定義の変数と null または未定義の値を比較した場合にのみ、# による比較は false を返し、それ以外の場合には true を返します:
$o:=new object
If ($o.undefined #10)
  // $o.undefined は未定義であるため、true が返されます
  ...
else
  ...
End if
  • 比較演算子 >、<、>=、<= は、未定義の変数とスカラー値 (数値、テキスト、日付、時間、ブール) との比較のすべてで false を返します。それ以外の場合には、比較が意味を持たないため、4D はエラーを生成します。
$o:=new object
If ($o.undefined >10)
  ...
else
  // $o.undefined は未定義であるため、false が返されます
  ...
End if

詳しくはドキュメントを参照ください!

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。