[Rio-pm] Percorrendo array

Daniel de Oliveira Mantovani daniel.oliveira.mantovani em gmail.com
Terça Janeiro 29 05:59:18 PST 2013


O ".." não cria uma lista temporária, então você não precisa do
"while" no código abaixo.

09:09 < GabrielVieira> mantovani: "In the current implementation, no
temporary array is created when the range operator is used as the
expression in foreach loops"

GabrielVieira++

2013/1/29 Daniel de Oliveira Mantovani <daniel.oliveira.mantovani em gmail.com>:
> 2013/1/12 Thiago Glauco <thiagoglauco em ticursos.net>:
>> 1-> de onde sua função tirou o @data?
>>
>> mas faça isso:
>>
>> my $i = 0;
>> while($i <= $#data) {
>>     $i = 1 if $data[$i] eq $gi;
>>     ...
>>
>
> Thiago, seu código é incompatível com o do autor acima.
>
>
>> Evite usar labels.
> Porque labels é uma má prática em Software Engineer  ? Label é uma
> feature poderosa que a linguagem oferece.
>
> sub array_find_position{$g=shift;return$_ if $f[$_]==$g for 0..$# }
>
> Se a lista for muito grande,
>
> sub array_find_position{$g=shift;$i=0;return$i if $f[$i]==$g while $i<=$# }
>
> []'s
>
>>
>> regards.
>>
>>
>> Em Sáb, 2013-01-12 às 20:37 +0000, Aureliano Guedes escreveu:
>>> Era sim, mas resolvi tomar outro metodo.
>>>
>>> sub array_find_position{
>>>     my $gi = shift;
>>>     my $position = 0;
>>>     LINE: foreach (@data){
>>>         if ($_ eq $gi){
>>>             last LINE;
>>>       }
>>>         else{
>>>             $position++;
>>>         }
>>>     }
>>>     return $position;
>>> }
>>>
>>>
>>> > From: blabos em gmail.com
>>> > Date: Sat, 12 Jan 2013 18:20:16 -0200
>>> > To: rio-pm em pm.org
>>> > Subject: Re: [Rio-pm] Percorrendo array
>>> >
>>> > perl -E '@array=(1..10); for(my $i = 0; $i < 10; $i
>>> ++){ if($array[$i]
>>> > == 2){ $i = 5} if($array[$i] == 7) {$i = 10} say $array[$i]}'
>>> >
>>> > Tipo isso?
>>> >
>>> > 2013/1/12 Tiago Peczenyj <tiago.peczenyj em gmail.com>:
>>> > > nao use foreach. use for ou while p indice e altere-o qdo quiser p
>>> avancar
>>> > > ou voltar
>>> > >
>>> > > Em 12/01/2013 15:53, "Aureliano Guedes" <guedes_1000 em hotmail.com>
>>> escreveu:
>>> > >>
>>> > >> Ola Monges,
>>> > >>
>>> > >> Me surgiu uma duvida nesse momento.
>>> > >>
>>> > >> Imagine que temos um array de 10 posições:
>>> > >> my @a = qw(0 1 2 3 4 5 6 7 8 9);
>>> > >>
>>> > >> Então este array esta em um loop, no caso um foreach:
>>> > >>
>>> > >> foreach my $i (@a){
>>> > >> ...
>>> > >> }
>>> > >>
>>> > >> Mas eu quero que se o valor dessa posição seja 6, por exemplo, o
>>> array
>>> > >> volte para segunda posição.
>>> > >>
>>> > >> Não sei se minha pergunta ficou estranha ou difícil de entender,
>>> mas como
>>> > >> eu faria isso??
>>> > >>
>>> > >> _______________________________________________
>>> > >> Rio-pm mailing list
>>> > >> Rio-pm em pm.org
>>> > >> http://mail.pm.org/mailman/listinfo/rio-pm
>>> > >
>>> > >
>>> > > _______________________________________________
>>> > > Rio-pm mailing list
>>> > > Rio-pm em pm.org
>>> > > http://mail.pm.org/mailman/listinfo/rio-pm
>>> > _______________________________________________
>>> > Rio-pm mailing list
>>> > Rio-pm em pm.org
>>> > http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>> _______________________________________________
>>> Rio-pm mailing list
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
> -dom
>
> --
>
> IBM - Business Analytics Optimization Consultant
> Daniel Mantovani +5511 8538-9897
> XOXO



-- 

-dom

--

IBM - Business Analytics Optimization Consultant
Daniel Mantovani +5511 8538-9897
XOXO


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