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

Thiago Rondon thiago at aware.com.br
Thu Mar 25 09:21:57 PDT 2010


Solli Honorio escreveu:
>
> Quer saber de um coisa, não tem restrições então vou explicar ...
>
> temos também o contexto de interpolação, que é aquela mágica que faz o 
> perl sabe que aquilo dentro de uma sentença é uma variável e não um 
> literal, por exemplo :
>
> my $total = 10;
> print qq/O total é : $total\n/;

Apenas uma observação, esta mágica (gramática) é uma operação semântica, 
as linguagems dinâmicas tem como caracteristica a /semântica dinâmica/.

# Outro exemplo, /Tipagem dinâmica/
my $foo = "bar";
$foo = $foo + 1;
$foo = 1;
$foo = $foo + 1;

Outra observação que faço, para complicar ou descomplicar o contexto, é 
que você pode falar sobre o contexto de passagem de dados, assim como o 
contexto na representacão de dados e etc..

O termo 'contexto' pode ser usado em diferentes situações:

# [---------------- 1 ------------------]
my @lista = qq/O total é $total/ ;
#                  [--------- 2 -----------]

Aqui possuimos a gramática, que se utiliza do contexto para:

1 - Equivalência. (lista[0] = escalar)
2 - Interpolação.

Porém, mesmo tendo aplicatividades diferentes na gramática, contexto é 
uma única coisa, é o 'o que está em volta, o que dá sentido' como o 
Champs colocou.

=head1 PROGRAMANDO

Ou seja, o contexto definido talvez no livro "Perl Programming" (não 
estou com ele agora) são sobre contextos (propriedades) distintos que 
você irá se deparar nas N situações programando em Perl.

Como o Nilson colocou as mais importantes em /dialogos/ (ex. 
equivalência), serão as listas e os escalares, que você irá utilizar 
para definir o seu algoritimo na -maioria dos casos-. Já na questão da 
interpolação, o contexto é utilizado para mudança de /sentido/ do que 
esta explicito semanticamente, ou seja não vai alterar o teu algoritimo 
mental provavelmente, mas irá alterar a forma que você irá escrever.

Ps.: Nada os impede de criar códigos para adicionar regras para novas 
tipagens, e assim criar novos contextos por exemplo. Vide o módulo Want, 
.... .

Meus centavos,
-Thiago Rondon



More information about the SaoPaulo-pm mailing list