|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 05 Apr 2002 18:39:31 To : "Igor Gerdler" Subject : Re: Мнение и вопрос -------------------------------------------------------------------------------- e.ru> <a8k7mv$1am3$1@ddt.demos.su> From: Artem Chuprina <ran@ice.ru> Здравствуй, Igor Gerdler. IG> > Проблема в том, что проверка аргументов у push как-то неочевидно IG> > взаимодействует с определением типа результата у ?:. push хочет lvalue IG> array и IG> > соответственно пробрасывает туда списковый контекст. Hо проверка IG> аргументов IG> > почему-то не может сообразить, что в соответствующей ситуации получится IG> lvalue IG> > array. IG> Конструкция /a/?@a:@b не работает во всех функциях, в которых нужно передать IG> ARRAY в качестве параметра (push,pop,shift...). Мне кажется, что IG> интерпретатор просто не может определить тип контекста, ведь во всех IG> остальных случаях конструкция работает. В perlfaq4 нашел следующий пример: IG> push @{ $count{$element} > 1 ? \@intersection : \@difference}, $element; IG> И в заключение еще вопрос: IG> > Проблема в том, что проверка аргументов у push как-то неочевидно IG> > взаимодействует с определением типа результата у ?:. push хочет lvalue IG> array IG> Как интерпретатор может определить, что функция требует lvalue? В данном случае гвоздями в код забито. Она встроенная. В случае пользовательской функции - по прототипу. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1445449953d83.html, оценка из 5, голосов 10
|