Вопрос

Я только что наткнулся этот на Гитхабе.

 ($config === NULL) and $config = Kohana::config('email');

Это эквивалент

if ($config === NULL) {
    $config = Kohana::config('email');
}

Это обычное дело?Ожидал ли бы я, что другие разработчики будут смотреть на мой код, если бы я воспользовался этим первым способом, чтобы мгновенно узнать, что он делает?

Это было полезно?

Решение

Мне потребовалась секунда, чтобы понять это, но на самом деле это должно работать практически на каждом языке программирования.Поскольку операторы «и» или «или» вычисляются лениво, если утверждение слева ложно, то нет необходимости вычислять остальные утверждения, поскольку все выражение всегда будет ложным (ложь, а истина — ложь).Аналогично, вы можете сделать это с помощью «или», но утверждение слева должно быть истинным, а затем утверждение справа. не стал бы быть оценены.

ПС: В данном случае не имеет особого значения, что то, что находится справа, на самом деле не является логическим выражением;оно просто примет истинностное значение $config

Другие советы

И — логический оператор PHP.

($config === NULL) and $config = Kohana::config('email');

имеет эквивалентный результат (но имеет меньший приоритет оператора) к

($config === NULL) && $config = Kohana::config('email');

Лично, чтобы избежать путаницы, я бы использовал ваш второй подход.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top