>>>>> "Ulisses-IBIZ" == Ulisses-IBIZ  <[email protected]> writes:

    Ulisses-IBIZ> exemplo de grep x map
    Ulisses-IBIZ> ----------------------------------
    Ulisses-IBIZ> my @lista = ('a', 'b', 'c');                                  
    # o mesmo que @lista = qw/a b c/;
 
    Ulisses-IBIZ> my @lista_grep = grep { $_ eq  'c' } @lista;          # 
@lista_grep = ('c'); a condicao $_ eq  'c' somente eh verdadeira,
    Ulisses-IBIZ> obviamente, para o elemento 'c'
 
    Ulisses-IBIZ> my @lista_map = map { uc $_ } @lista;              # 
@lista_map = qw/A B C/; uppercase em todos os elementos
 
    Ulisses-IBIZ> my @impares = grep { $_ % 2 } qw/1 2 3 4 5 6 7 8 9/; #
    @impares = qw/1 3 5 7 9/; a expressao $_ % 2 eh o resto da divisao
    Ulisses-IBIZ> por 2 que da 1 (true) para os caras impares
 
    Ulisses-IBIZ> my @dobro = map { 2 * $_ } qw/1 2 3 4 5 6 7 8 9/;           # 
@dobro = qw/2 4 6 8 10 12 14 16 18/; dobra o valor de CADA
    Ulisses-IBIZ> elemento

Dá pra emular o comportamento do grep com map, talvez fique mais fácil
entender a diferença entre dois:

my @maior_que_cinco = grep { $_ > 5 } 1..10; # 6, 7, 8, 9, 10

my @maior_que_cinco = map { $_ > 5 ? $_ : () } 1..10; # 6, 7, 8, 9, 10

grep é só um caso bem comum de map, então tem uma sintaxe abreviada e
uma otimização no backend do perl, pra esse caso.

-- 
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://blog.edencardim.com/            http://www.shadowcat.co.uk/servers/
http://twitter.com/#!/edenc
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a