[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