遅延演算子
遅延評価とは、式の結果が必要になるまでその式の実行を遅らせることだ。遅延評価は、一部のプログラミング言語の基本的な機能のひとつだ。
当然、この遅延により、結果が必要とならない場合、プログラムの実行速度が向上する可能性がある。
-
||
(or)演算子:最初の式がfalse
の場合にのみ、2番目の式が評価される。anExpression()
の結果がtrue
である場合、||
式の式の結果は必然的にtrue
となる。||
式の式の結果を決定するために2番目の式を評価する必要がなくなったため、2番目の式は評価されない。 -
&&
(and)演算子:2番目の式は、1番目の式がtrue
の場合にのみ評価される。anExpression()
の結果がfalse
の場合、&&
式の値は必然的にfalse
となるため、2番目の式は評価されない。 -
?:
(三項)演算子: 条件がtrue
であるかfalse
であるかに応じて、1番目の式または2番目の式が評価される。
これらの演算子の遅延は、パフォーマンスだけでなく、式の一方を評価するとエラーになる場合もある。
例えば、以下の条件Aチェックは文字列が空の場合、エラーになる。
s
の最初の要素にアクセスするには、文字列にそのような要素が確実に存在することを確認する必要がある。そのため、次の条件チェックでは、エラーになる可能性のある論理式を&&
演算子の右側に移動し、安全に評価できる場合にのみ評価されるようにしている。
遅延評価は、関数ポインタ、デリゲート、および範囲を使用しても実現できる。これらについては、後の章で説明する。