Все мы знаем о коротком замыкании в логических выражениях, т.е. когда
if ( False AND myFunc(a) ) then
...
не беспокоит выполнение myFunc()
, потому что условие if
не может быть истинным.
Мне было любопытно, есть ли эквивалент для вашего повседневного алгебраического уравнения, скажем,
result = C*x/y + z
Если C=0
, то нет смысла оценивать первый член. С точки зрения производительности не было бы большого значения, если бы x
и y
были скалярами, но если мы притворимся, что это большие матрицы, а операции являются дорогостоящими (и применимыми к матрицам), то, несомненно, это будет иметь значение. Конечно, вы можете избежать такого крайнего случая, добавив оператор if C!=0
.
Так что мой вопрос в том, существует ли такая функция и полезна ли она. Я не очень программист, так что, вероятно, это происходит под каким-то именем, с которым я не сталкивался; если так, пожалуйста, просветите меня :)