|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 20 Feb 2004 19:16:55 To : Yury Kopyl Subject : Re: Кошерность вызова статик методов -------------------------------------------------------------------------------- Yury Kopyl -> All @ Fri, 20 Feb 2004 08:26:34 +0000 (UTC): YK> Hello, All! YK> К примеру есть такой код (все лишние детали убраны): YK> package MyClass; YK> sub test1{ YK> my $self=(ref($_[0]) eq __PACKAGE__)?shift:''; Совсем кошерно - if (ref($_[0]) && UNIVERSAL::isa($_[0], __PACKAGE__)) { shift; } Hо обычно ограничиваются банальным if (ref($_[0])) { shift; } YK> my (@args)=@_ YK> .... YK> }; YK> sub test2{ YK> my $self=shift; YK> my (@args)=@_; YK> .... YK> }; YK> sub new {bless{}}; YK> package main; YK> my $c=new MyClass; YK> $c->test1(1); # @args=(1) - ok YK> MyClass::test1(1); # @args=(1) - ok YK> MyClass->test1(1); # @args=('MyClass',1) - not ok YK> $c->test2(1); # @args=(1) -ok YK> MyClass::test2(1); # @args=() -not ok YK> MyClass->test2(1); # @args=(1) ok YK> Вот сижу и думаю, что будет кошерней. В идеале конечно чтобы YK> корректно работали 3 варианта вызова статичного метода. caller, YK> Devel::*, смотрел. Hе помогает -- Artem Chuprina RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5.3 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/11477a8e5cea3.html, оценка из 5, голосов 10
|