[Cascavel-pm] Duvida Array

Luis Motta Campos luismottacampos em yahoo.co.uk
Sexta Agosto 24 05:33:33 PDT 2007


On Fri, 24 Aug 2007, Patty Silva wrote:
> ele pega normal.. eu imprimo e ela sai 0,2 :D
> ele da o erro:
> Argument "0,2" isn't numeric in array slice at data.pl line 161
> 
> :)

   Patty,

   O que estah acontecendo aqui eh que o teu codigo estah esperando uma "fatia"
(slice) do array, nao um indice especifico. Lembre-se de que esta eh uma
lingugem de programacao, nao uma maquina de adivinhacao. ;-)

   Voce estah escrevendo

   # Aqui, @coins tem quatro elementos
   @coins = qw{ Quarter Dime Nickel Penny };

   # Agora, vamos pegar dois deles:
   @big_coins = @coins[ $begin , $end ];

   Note que eu escrevi "@coins[ $begin , $end ]". Eu estou cortando o array
@coins inicial entre os indices $begin e $end. Isto eh totalmente diferente de
dizer "@coins[$teste]" (mesmo por que nao deveria ser "@", mas "$", jah que voce
estah se referindo a um valor escalar apenas, dado pelo indice contido em
"$teste").

   Quando a gente escreve um indice com mais de um valor, o que o Perl entende eh
que voce quer uma "fatia", contendo todos os valores presentes no array entre
$begin e $end (no seu caso, "0" e "2"). A virgula faz parte da sintaxe do
"slice", e nao dos dados.

   Acho que agora, quando eu escrever

   @big_coins = @coins[0,2];

   Voce vai ver que eh bem diferente de

   @big_coins = @coins[$teste];

   Seja lah o que for que voce tenha na variavel $teste...

   Espero que agora as coisas esteham claras.
   Putamplexos!
-- 
Luis Motta Campos
Perl Programmer, Hobbyist Cook and Photographer


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