В Matlab (по состоянию на 2016a) условное значение if (array_of_logicals)
функционально эквивалентно if (all(array_of_logicals))
. documentation говорит: «Выражение истинно, когда его результат непусто и содержит только ненулевые элементы (логические или действительные числовые)».Matlab: assert (array) vs if (array)
С другой стороны, assert()
only accepts a "Условие утверждения, указанное как действительное выражение MATLAB." Экспериментально это означает, что array_of_logicals
следует использовать как assert(all(array_of_logicals))
.
Что вы можете сказать о причине немного отличающегося поведения?
Я понимаю, что одна из причин может быть то, что с assert()
вы хотите, чтобы исключить неоднозначность интерпретации assert(all(array_of_logicals))
против assert(any(array_of_logicals))
, , но то же самое можно сказать и о if
.
Редактировать: В частности, я хотел бы понять, почему это поведение было выбрано для if
.
Это действительно просто для размышлений, но я бы предположил, что это потому, что 'assert' по своей природе должен быть максимально явным. – Suever