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

Solli Honorio shonorio at gmail.com
Wed Mar 24 03:49:11 PDT 2010


Em 24 de março de 2010 01:31, "Flávio R. Lopes"
<flavio.lopes em links.inf.br>escreveu:

> Opa!...valeu Thiago.
> Agora ficou claro!....acho que já tinha pegado o espírito da coisa!....só
> não soube me explicar!
>
> (Solli, já li seu link viu!....prometo me esforçar mais antes de perguntar,
> mas como vc sabe, sou novato e muitas vezes não vou enxergar as
> explicações/situações/raciocínios  com a clareza que vocês tem, pois vcs tem
> muito mais esperiência que eu!!)
>
>
Flávio, como disse estamos sempre dispostos a ajudar, mas não gostamos
quando parece que o esforço é apenas da nossa parte e o  tempo investido não
está contribuindo. Então quando recomendamos um link, esperamos que a pessoa
retorna dizendo algo do tipo '... eu lí, mas não entendi tal parte...', isto
mostra esforço da outra parte também, não só da minha parte.


> []s
>
> Thiago Glauco escreveu:
>
>  Aiai..
>>
>> Este é o tipo da coisa que é tão simples que fica difícil explicar...
>>
>> Quando o Perl foi criado, uma das preocupações do Larry era tornar a
>> linguagem parecida com a linguagem humana. Que é influenciada pelo contexto.
>> O contexto é algo que deve estar subentendido pelas duas partes do dialogo.
>>
>>
>> Exemplo de contexto: “Chovem canivetes.” ou “Ele me cortou com um
>> canivete.”
>>
>> A palavra canivete varia conforme o contexto. E você sabe disso
>> intuitivamente, culturalmente. É impossível chover canivetes. Mas você sabe
>> que canivetes são perigosos. Então se alguém disser que choveram canivetes,
>> você associa o canivete a uma situação de chuva perigosa, logo muita chuva.
>>
>> Agora, vamos levar isto para o Perl.
>>
>> $myVar = 1;
>> $myOtherVar = 2;
>> $sum = $myVar + $myOtherVar;
>>
>> Para o Perl $myVar pode significar a string '1' ou o valor numérico
>> inteiro '1'. O mesmo vale para $myOtherVar. Apartir do momento que você quer
>> somar os valores o Perl para e pensa... Eu não posso somar strings com o
>> operador '+'. Logo o programador quer dizer que os valores são numéricos.
>> Isso é contexto.
>>
>> Então, o Perl guarda o valor numérico da soma em $sum.
>>
>> Seu código continua...
>>
>> print $sum, "\n";
>>
>> E o compilador sabe, pelo contexto, que agora você quer tratar $sum como
>> uma string de texto, e não mais como um número... O contexto, dentro do Perl
>> é como o contexto da linguagem humana. Você deve verificar a situação para
>> saber o real significado das coisas. É estranho no começo mas com a
>> experiência você percebe que é muito mais prático que se dar ao trabalho de
>> explicar ao compilador o que você quer, como no Java, que te obriga a
>> converter toda a hora os valores se isto já está implícito.
>>
>> Chegando agora as listas:
>>
>> quando você diz ao compilador
>>
>> $myVar = @myArr
>>
>> O compilador sabe que não pode colocar o array dentro de um Scalar. Mas o
>> compilador também sabe que você não é um idiota. Então ele pensa: "O que
>> existe em um array que pode ser guardado dentro de um escalar? Ah, já sei. O
>> número de elementos do array".
>>
>> se você fizer $myVar = "@myArr" o compilador vai entender que você quer
>> transformar o conteúdo do array em um string por causa das aspas. Isso é
>> contexto. É o que deve estar subentendido na situação.
>>
>> se você fizer @myArr = $myVar você criou um array de um elemento.
>> e ($myVar1, $myVar2) = @myArr então os valores $myArr[0] e $myArr[1] serão
>> associados as variáveis dentro dos parenteses...
>>
>> Espero ter ajudado.
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
>


-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100324/546a631e/attachment.html>


More information about the SaoPaulo-pm mailing list