[SP-pm] Dúvida entre Scalar Context e List Context

Andre Carneiro andregarciacarneiro at gmail.com
Thu Mar 25 04:51:44 PDT 2010


Contextos:

Lista
Escalar
Boolean(tipo 'especial' de contexto escalar - RTFM abaixo)
Void

http://perldoc.perl.org/perldata.html#Context

Luis, você falou de um quinto contexto. Estou tentando encontrar na
documentação, mas conhecendo você deve estar nas 'entrelinhas'....

Quem tiver tempo de ir atrás disso vá. Quem responder primeiro corretamente
eu pago uma breja !


Cheers!



2010/3/25 Solli Honorio <shonorio at gmail.com>

>  Void e  Boolean não são tipo de variáveis, pelo menos não no Perl 5. O
> perldoc perldata vai lhe dar o caminho para os outros tipos ...
>
> O Void e Boolean que você viu nos links informados são contexto de retorno
> da scalar, ou seja quando é considerado falso/verdadeiro, ou quando não é
> aguardado algum retorno.
>
> O link do mastering explica bem estas informações ...
>
> Solli M. Honório
>
> Em 25 de março de 2010 04:15, "Flávio R. Lopes" <flavio.lopes at links.inf.br
> > escreveu:
>
> É....acho que sou eu quem vai pagar as brejas! :)
>>
>> Pesquisei na Net e vi estes:
>> - Scalar
>> - List
>> - Void
>> - Boolean
>>
>> Fontes:
>> http://www.perlmonks.org/?node_id=738558
>> http://www252.pair.com/comdog/mastering_perl/Chapters/contexts.html
>>
>> Qual seria o quinto tipo?
>>
>>
>> Luis Motta Campos escreveu:
>>
>>  Flávio R. Lopes wrote:
>>>
>>>
>>>> Blz Solli e Nelson....acho que deu pra entender!
>>>>
>>>> É que no livro aparece o seguinte exemplo que me deixou em dúvida:
>>>>
>>>> @rocks = qw( talc quartz jade obsidian );
>>>> print "How many rocks do you have?\n";
>>>> print "I have ", @rocks, " rocks!\n";        # WRONG, prints names of
>>>> rocks
>>>> print "I have ", scalar @rocks, " rocks!\n"; # Correct, gives a number
>>>>
>>>> Então se eu utilizasse a penultima linha, eu estaria retornando um
>>>> Contexto de Lista (pois me traria a lista dos nomes das pedras)
>>>> Já na última, estou forçando "@rocks" a me retornar um valor escalar, ou
>>>> seja, esta linha é um Contexto Escalar! (pois me retorna o número de
>>>> elementos que tenho no meu array)
>>>>
>>>> É isso mesmo?
>>>>
>>>>
>>>
>>> Quase. Você está confuso, ainda, sobre o que é "contexto". Contexto quer
>>> dizer "o que está em volta, o que dá sentido".
>>>
>>> Contexto de lista é (entre outras coisas) uma chamada de função:
>>>
>>> my_example_function(
>>>  qw( tudo aqui dentro tem contexto de lista ), @inclusive, #$isso
>>> );
>>>
>>> ( contexto, de, lista, claro );
>>>
>>> [ qw{ tudo dentro de '[' e ']' está em contexto de lista ];
>>>
>>> { aqui => 'também', é => 'tudo', contexto => 'de lista' };
>>>
>>> Contexto escalar é mais restritivo:
>>>
>>> scalar @lista; # contexto escalar "na marra"
>>>
>>> $escalar = @lista; # contexto escalar "explícito"
>>>
>>> $hash{ CHAVE } = $valor; # qual é o contexto em que "CHAVE" está?
>>>
>>> Lição de casa: existem mais contextos que apenas "lista" e "escalar".
>>> Eles são 5 no total. Encontre-os e leia sobre eles. Pontos extras (e uma
>>> rodada de cerveja paga por mim) se você postar o que encontrar aqui.
>>>
>>>
>>> Putamplexos
>>>
>>>
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm at pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>
>
>
> --
> "o animal satisfeito dorme". - Guimarães Rosa
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
André Garcia Carneiro
Analista/Desenvolvedor Perl
(11)82907780
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100325/95423e4f/attachment.html>


More information about the SaoPaulo-pm mailing list