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

Thiago Rondon thiago at aware.com.br
Tue Mar 23 05:34:35 PDT 2010


Solli Honorio escreveu:
>
>
>
>      Escalar ($), uma string qualquer, de qualquer tamanho*
>
>
> Sem querer ser chato, mas já sendo ... vc acha mesmo correta a tua 
> definição de 'valor escalar' ? Pergunto isto pq vc está associando a 
> um tipo de valor, e isto verdade....
>  
Qual seria a melhor definição ?

*Qualquer tamanho. [...]

>     Aí vem um poder mágico, a equivalência. As operações e valores em
>     Perl podem depender do contexto. Você deve pensar em dois
>     contextos: escalares e listas. E dependendo do que você deseja, o
>     retorno desta operação pode ser uma.
>
>     Equivalência ?
>
>     Faça o seguinte teste:
>     my @foo = ('alice', 'john');
>     my ($one, $two) = @foo;
>     my $count = @foo;
>
>
> eu acho que aqui estamo confundindo mais do que ajudando, estamos 
> falando de atribuições e misturando com contexto ... bom só para 
> pensarmos numa melhor maneira de explicar isto ... eu ainda acho que o 
> problema é que as pessoas não entendem a palavra 'contexto'....
>  
Na realiadade estou utilizando a nomeclatura usada no perldoc para esta 
explicação.

Na minha visão o maior problema é do entendimento de contexto na 
linguagem em relação aos valores e as operações envolvidas, no qual tem 
haver com o tipo de dados existente (listas e escalares).

Por isto tentei definir logo abaixo a definição de função unária, que 
também é importante para o entedimento do "contexto".

Tudo isto para explicar o que são atribuições. Concordo contigo que 
minha explicação pode ter ficado confusa, depois relendo fiquei até com 
medo da falta de pontos e \n. :-p

<matemática>
    Dois conceitos matemáticos para melhorar o entendimento : valor 
veritativo e a valoração.
 
    <Radiohead> 2 + 2 = 5 </Radiohead>

</matemática>

$ perldoc perldata

Context
 
(...) . There are two major contexts: list and scalar. Certain 
operations return list values in | contexts wanting a list, and scalar 
values otherwise. If this is true of an operation it will be mentioned 
in the documentation for that operation. In other words, Perl overloads 
certain operations based on whether the expected return value is 
singular or plural. Some words in English work this way, like "fish" and 
"sheep".

-Thiago Rondon





More information about the SaoPaulo-pm mailing list