[Cascavel-pm] [OFF] Bombril [Era: Re: Somar elementos numericos de um array]

Igor Sutton Lopes igor.sutton em gmail.com
Segunda Abril 9 08:49:54 PDT 2007


Olá,

On 2007/04/09, at 16:30, Víctor A. Rodríguez wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Patty,
>
> Patty Silva wrote:
>> Pessoal.. tem como eu somar elementos numericos de um array?
>> ex:
>> @teste=(1,2,4,1,3,1,1,1,4,56,7,8,9);
>> somar=1+2+4+1+3....
>> sem precisar do for?
>
> a map e seu amigo !!
>
> my $suma;
> map { $suma += $_ } @teste;

Acredito que vale a pena estudar um pouco os módulos padrão do Perl,  
antes de fazer coisas como esta. Existem os módulos List::Util,  
Hash::Util e Scalar::Util. Aqui está a explicação da razão destes  
módulos existirem (trecho extraído de 'perldoc Scalar::Util':

        "Scalar::Util" contains a selection of subroutines that  
people have
        expressed would be nice to have in the perl core, but the  
usage would
        not really be high enough to warrant the use of a keyword,  
and the size
        so small such that being individual extensions would be  
wasteful.

Agora vem o tradicional momento de perguntar 'se é tão simples, por  
que usamos um módulo ao invés de usar os equivalentes das maneiras x,  
y e z?'.

1. Fazem parte do core do Perl, sendo encontrados em todas as  
plataformas disponíveis em Perl;
2. São mais optimizados que o map, for e amigos;
3. Se o core do Perl for modificado, com certeza eles também serão  
modificados e se beneficiarão das optimizações presentes no Perl.

Outro grande erro é a falta de informação -ou memória- que se tem em  
relação às diversas soluções modulares em Perl. Lembro-me quando foi  
tópico anteriormente sobre buscar arquivos em diretórios, e ninguém  
disse uma única vez 'File::Find', ou 'File::Find::Rule' ou  
'File::Finder'. Mas o equívoco não foi somente aqui nesta lista, pois  
quando fiz uma apresentação[1] para o Lisbon.pm Tech Meeting,  
perguntei quantos dos presentes conheciam o File::Spec, o File::Path,  
os File::Find's e a resposta foi decepcionante.

Minha dica aqui é: leiam a documentação dos módulos que vêm com o  
Perl, aprendam sobre eles, façam apontamentos como 'módulos que  
gostaria de usar' e coisas do tipo. Anotem em algum lugar o que eles  
fazem e consultem quando tiverem algum problema. Reservem alguns  
minutos do seu dia para ler o Perlmonks[2] e ver que tipo de dúvidas  
as pessoas tem e quais são as suas respostas. Ler sobre problemas  
diferentes podem dar-lhes soluções para os problemas que possuem.

[1] http://lisbon.pm.org/slides/
[2] http://www.perlmonks.org/

--
Igor Sutton
igor.sutton em gmail.com



-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070409/86c0c3d2/attachment-0001.html 
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : PGP.sig
Tipo  : application/pgp-signature
Tam   : 186 bytes
Descr.: This is a digitally signed message part
Url   : http://mail.pm.org/pipermail/cascavel-pm/attachments/20070409/86c0c3d2/attachment-0001.bin 


Mais detalhes sobre a lista de discussão Cascavel-pm