[SP-pm] Variavel somente leitura

Lucas Mateus lucasmateus.oliveira em gmail.com
Segunda Abril 28 11:37:10 PDT 2008


Solli, faz muito sentido.



2008/4/28 Solli Honorio <shonorio em gmail.com>:

>
> 2008/4/28 Lucas Mateus <lucasmateus.oliveira em gmail.com>:
>
> > > Mas mesmo assim isto parece meio estranho, pois a minha dúvida com
> > relação a este problema é se vc > não quer que alguém externo as tuas
> > rotinas façam esta alteração, ou se é as tuas rotinas mesmo (o > que não faz
> > o menor sentido pra mim, já que neste contexto vc está programando e pode
> > definir que > tipo de ação cada rotina executará).
> >
> > Solli, aceite a afirmação: isso é necessário.
> >
>
> tudo bem cara, eu aceito a tua afirmação. Só que tem um detalhe nesta
> história. Vc não está impedindo que alguém altere o teu valor, apenas está
> alterando a maneira de fazer isto. Se eu eu precisava apenas fazer a
> atribuição simples '$variavel = valor', estou tendo que fazer outras
> 'maracutaias' para atualizar o valor.
>
> é difícil dar outra alternativa sem saber extamente o teu problema, mas na
> minha visão OO poderia ajudar se você definir a "variável" em questão como
> 'Read Only' (utilizando o Class::Accessor) e aí nenhum método da classe
> poderá alterar o conteúdo. Desta maneira se vc quiser alterar o conteúdo
> terá se instanciar com outro valor.
>
> Outra alternativa é utilizar o 'caller' para restringir realmente quem
> você quer que tenha acesso de 'write' na 'propertie', tipo :
>
> <code>
> package AlgumaCoisa;
> use base qw(Class::Accessor);
>
> __PACKAGE__->mk_accessors(qw(host));
>
> sub host {
>   my $self = shift;
>   my $who_is_calling_me = ( caller(1) )[3];
>
>   if (@_) {
>     if ( $who_is_calling_me eq "AlgumaCoisa::pode" ) {
>       $self->{host} = $_[0];
>     } else {
>       die "Ta louco meu !!!";
>     }
>   }
>
>   return $self->{host};
> }
>
> sub pode {
>   my $self = shift;
>   $self->host('troquei');
> }
>
> sub nao_pode {
>   my $self = shift;
>   $self->host('troquei');
> }
>
> 1;
>
> </code>
>
> Pra mim, o código acima faz mais sentido já que estou limitando qual
> método tem acesso de gravação. Claro que este cara ainda tem alguns
> limitantes, mas já dá para ter uma boa idéia sobre o meu questionamento
> sobre a real utilidade do código que vc está vendo e como estabelecer uma
> restrição mais consistente.
>
> Abraços,
>
> Solli M. Honório
>
> - -
>
> "o animal satisfeito dorme". - Guimarães Rosa
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20080428/fd75950c/attachment-0001.html 


Mais detalhes sobre a lista de discussão SaoPaulo-pm