[Rio-pm] (spoiler) Re: desafio Perl! (parte final)
Breno G. de Oliveira
breno em clavis.com.br
Segunda Julho 17 20:56:44 PDT 2006
E aí? Pensou? Desistiu? Tá de saco cheio? Quer saber a resposta?
Aí vai!
Lembre-se de que, em Perl, as coisas se comportam de acordo com o
CONTEXTO em que elas são utilizadas.
@y = ( 50 .. 60 );
$x = ( 4, 5, @y );
Aqui, $x é escalar, mas está recebendo uma lista. O que acontece?
Suponha antes um caso mais "normal", digamos:
$x = (4, 3, 2, 1);
Como estamos no contexto ESCALAR, $x recebe o último valor passado. No
caso, $x = 1.
Ora, mas então nesse caso, conforme vc provavelmente supôs na primeira
vez que olhou para o problema, teríamos algo como:
$x = (4, 5, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60);
e, nesse caso, $x deveria ser 60, certo? Bom, nesse caso sim. Mas não
foi isso o que foi escrito. Vejamos de novo:
$x = (4, 5, @y);
entao o último valor da lista, o valor que será de fato atribuído a $x,
é @y. Ou melhor, é o valor retornado por @y no contexto escalar.
Agora ficou fácil, hein?
Afinal, sabemos que, em contexto escalar, um array retorna o número de
elementos contidos dentro dele! O que tem em @y, então?
@y = (50..60); # 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60
11 elementos. Logo,
$x = 11;
Breno G. de Oliveira wrote:
> Ok, vamos relembrar o problema...
>
> @y = ( 50 .. 60 );
> $x = ( 4, 5, @y );
>
>
> e aí? Qual o valor de $x ???
>
>
> Aí vai OUTRA dica...
>
> respondeu 13? Errou de novo!!!
>
>
> sem olhar o código hein pessoal? Será que alguém mata?
>
>
> no próximo email eu mando a resposta. Quem quiser pensar mais não leia o
> próximo email!
>
> []s
>
> breno
>
>
>
> Breno G. de Oliveira wrote:
>
>>Essa eu ia mostrar no último encontro social mas esqueci...
>>
>>veja o seguinte código:
>>
>>@y = ( 50 .. 60 );
>>$x = ( 4, 5, @y );
>>
>>
>>Responda rápido! Qual o valor de $x ????
>>
>>Vou dar uma dica:
>>
>>se respondeu 60, errou!
>>
>>
>>continue pensando... não vale testar o código!
>>_______________________________________________
>>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
>
>
Mais detalhes sobre a lista de discussão Rio-pm