1
The documentationは、OR論理演算子を短絡すべきであることを示しています、あなたが発生する可能性が最も低いに発生する可能性が高いからそれらを発生する確率がわかっている場合HPCC-ECL論理演算子 - ORが短絡しないのはなぜですか?
、 を注文する必要があります一度任意の理由化合物 OR条件の一部がTRUEと評価され、表現の残りの部分は
をバイパスされて、私が間違っていない限り、予想通り、これは動作していません。 TRUEを返す式を評価する必要がある場合、ORの後の次の式を評価し続けているようです。 ハードコードされた値がTRUEの場合、期待通りに機能するようです。
私はコードや文書を間違ったり誤解したりしていますか?
は、以下のコードを考えてみましょう:
IMPORT STD;
superFileName := 'temp::superFile';
fileName := 'temp::regularFile';
returnsTrue := ~STD.File.FileExists(fileName, TRUE); // File does not exist, so will return true as expression is negated
getSubCount := NOTHOR(STD.File.GetSuperFileSubCount(superFileName)) > 0; // "Could not locate superfile: thor::nonExistent"
deleteFile := STD.File.DeleteLogicalFile(fileName);
deleteSuperFile := STD.File.DeleteSuperFile(superFileName);
SEQUENTIAL(
deleteFile,
deleteSuperFile,
OUTPUT(returnsTrue), // true
OUTPUT(IF ((TRUE OR getSubCount), 'true', 'false')), // 'true'
OUTPUT(IF ((returnsTrue OR getSubCount), 'true', 'false')), // "Could not locate superfile: thor::temp::superFile"
);