The documentation означает, что ИЛИ логический оператор должен короткого замыкания:Логические операторы HPCC-ECL. Почему 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"
);