Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Косвенный вызов методов.

1.9K
07 июля 2003 года
Oleg32
17 / / 20.10.2002
В одном из учебников Perl, читаю:
name $sword $oldname || "Glamdring"; # здесь нельзя использовать "or" !
становиться желаемым:
$word->name($oldname || "Glamdring");

но:
speak $mage "friend" && enter(); # здесь должно быть "and" !
становится двухсмысленным:
$mage->speak("friend" && enter());

что можно исправить, переписав в одной из следующих эквивалентных форм:
enter() if $mage->speak("friend");
$mage->speak("friend") && enter();
speak $mage "friend" and enter();

--------------
Мне не ясно почему нельзя использовать вместо || - "or", а вместо "and" - && . Ведь они отличаются только приоритетом над запятой, а тут никаких запятых нет.
И еще:
Почему становится двухсмысленным:
$mage->speak("friend" && enter());
и вместо него лучше использовать
$mage->speak("friend") && enter();
ведь в этом случае метод speak примет в качестве аргумента ("friend") и если результат выражения будет истинным, то как мне кажется анализатор просто перейдет к следующему enter() без вызова его в качестве аргумента метода. Я понимаю, что при косвенном вызове метода скобки с аргументов можно снять, но если они проставлены в ("friend"), то по идее должно вычисляться только то то, что находится в скобках? Или я не прав.
Я просто хочу понять логику, что бы в дальнейшем правильно использовать синтаксис вызова методов.
Спасибо за внимание.
300
07 июля 2003 года
ReDrum
689 / / 20.04.2000
Оно тебе надо так заморачиваться? ;)=
Простота - залог здоровья.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог