[SP-pm] O jeito SUPER de fazer as coisas
Luis Motta Campos
luismottacampos at yahoo.co.uk
Sun Oct 12 00:29:26 PDT 2008
Daniel de Oliveira Mantovani wrote:
> Tava lendo o manual, quando encontro o "O jeito SUPER de fazer as coisas",
> do outro jeito funciona mas desse não:
>
> #!/usr/bin/perl
>
>
>
> #Animal = Classe(Classe é no sentido de categoria), speak = método.
>
> {package Animal;
> sub speak {
> my $class = shift;
> print "O $class faz ", $class->som, "\n";
> }
> }
>
> {package Rato;
> my @ISA = qw(Animal);
> sub som { "squeak" }
> sub speak {
> my $class = shift;
> $class->SUPER::speak;
> }
> }
>
> Rato->speak;
Eu estou aqui apenas para falar dos problemas que você tem e não
enxerga. O Eden Cardim já resolveu o problema que você viu e perguntou.
1. Eu não vi as linhas obrigatórias "use strict;" e "use warnings;" no
teu programa;
2. Você tem chaves ("{", "}") demais. Não é preciso usar blocos para
definir pacotes;
3. Você não sabe a diferença entre "my", "our", "use vars;" e qualificar
variáveis com nome completo do pacote, e não faz idéia do motivo pelo
qual usa estas coisas. Por favor volte a ler o manual a respeito disso.
Conhecer escopo e saber declarar variáveis dentro de cada um dos
diferentes possíveis escopos é fundamental para a boa aplicação de OO em
Perl.
4. Você deveria instanciar seus objetos antes de invocar métodos sobre
eles. Onde está o código de instanciação para a classe "Rato" (que, por
sinal, deveria ser "Animal::Rato", para documentar a hierarquia). Eu sei
que não é obrigatório ter uma instância para ser capaz de invocar
métodos, mas pense nas consequências para a programação e para o teu
aprendizado e você vai me dar razão.
5. Finalmente, use Perl::Tidy, e eu recomendo fortemente tentar usar
Perl::Critic. Vai melhorar o teu estilo e vai ajudar muito a leitura.
Putamplexos.
--
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.
More information about the SaoPaulo-pm
mailing list