|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Љ®бв вЁ ’®Є а 2:5020/400 20 Feb 2004 20:18:08 To : Artem Chuprina Subject : Re: Кошерность вызова статик методов -------------------------------------------------------------------------------- Artem Chuprina пишет: ... AC> Совсем кошерно - AC> if (ref($_[0]) && UNIVERSAL::isa($_[0], __PACKAGE__)) { shift; } AC> Hо обычно ограничиваются банальным if (ref($_[0])) { shift; } А можно ли делать просто if (UNIVERSAL::isa($_[0], __PACKAGE__)) { shift; } Вроде и так всё работает. В чём может быть разница? #!perl -w use strict; package test1; sub new { bless {}, 'test1';} 1; package test2; sub new { bless [], 'test2';} 1; package main; foreach my $ref( new test1, new test2){ print "main " if( UNIVERSAL::isa($ref, 'main') ); print "hash " if( UNIVERSAL::isa($ref, 'HASH') ); print "list " if( UNIVERSAL::isa ($ref, 'ARRAY') ); print "test1 " if( UNIVERSAL::isa ($ref, 'test1') ); print "test2 " if( UNIVERSAL::isa ($ref, 'test2') ); print 'hashref ' if ref($ref) && $ref->isa ('HASH'); print 'arrayref ' if ref($ref) && $ref->isa ('ARRAY'); print "\n"; } -- Konstantin Tokar fido7@tokar.ru Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5.3 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6488b4191c88.html, оценка из 5, голосов 10
|