|
| |
|
|
| |
для: tAleks
(07.04.2007 в 12:01)
| | | or вычисляет логическое выражение по упращённой схеме: если первое выражение оказалось true, то смысла вычислять второе нет - логическое выражение уже равно true. Если первое выражение оказалось false - для получения результата нужно проверять второе выражение, так как оно может оказаться и true и false.
Очень давно это неявное правило стали использовать для таких коротких выражений, ну в Perl ладно, он выстраивался как контекстный язык - на нём отрабатывались приёмы лингвистического языка, поэтому он пропитан неявными и неочевидными правилами... Ладно ранний C - на нём выжимали всё, что можно и эта конструкция позволяла экономить такты/байты.
Нет, расползлось по всем языкам... даже в C#, уж казалось новый язык - чуть не отдельные ключевые слова вводятся для обязательного и необязательного вычисления выражений.
Это плохая конструкция по тому, что не очевидная... у вас у самого вызывает затруднение интерпретации её работы. Будте уверены, что и сопровождающий ваш код программист также может потратить изрядное вермя на поиски ответа и разбор кода. Следует использовать конструкцию
<?php
if(!$ftp->rename($old_path, $new_path)) die('Не могу переименовать папку');
?>
|
Так как она работает одинаково во всех языках программирования и в отличие от or не позволяет внести дополнительные ошибки в код. | |
| |
|
|
| |
|
|
| |
для: tAleks
(07.04.2007 в 12:01)
| | | or - логический оператор. Если одно условие не соблюдается, то проверяется следующее. Например, можно написать
<?php
myfunc() or alternative() or print("Функции 'myfunc' и 'alternative' вернули false.");
?>
|
Если самое первое условие соблюдено, то остальные даже не проверяются, т.е. если myfunc() вернула true, то все остальное игнорируется.
Это будет работать?
Да. | |
| |
|
|
| |
|
|
| | Это будет работать?
$ftp->rename($old_path, $new_path) or die('Не могу переименовать папку');
|
Вообще вопрос такой: or die срабатывает когда что-то, не важно что, вернуло FALSE? Или важно что? | |
| |
|
|
|