Perlについての質問箱 11箱目
■ このスレッドは過去ログ倉庫に格納されています
0489デフォルトの名無しさん
NGNG通常オブジェクトのメンバ変数にアクセスするには、アクセスメソッドを通して行いますが
少し疑問があります。
#######################################
Package Hoge;
sub new{
my $self = shift;
my $hashref = shift;
bless { hashref=>$hashref },$self;
}
sub hashref{
my $self =shift;
%{$self->{hashref}} = ( @_ ) if ($_[0]);
return $self->{hashref};
}
#######################################
Package main;
use Hoge;
my $test = { hoge=>1,hage=>2 };
my $obj = Hoge->new($test);
my $hashref = $obj->hashref();
###########################################
この状態でメインパッケージにの$hashrefに
$hashref->{$_} =~ s/.//g foreach keys %$hashref;
をやってしまうと、Hogeクラスのオブジェクトのプロパティにまで影響を与えてしまうんですが、
これはよくないことですよね?アクセスメソッドの返り血を、リファレンスにするのは禁止事項なのですか?
そういう記述がみつけられないんですが;エロイ人カコイイ回答をおながいします。
■ このスレッドは過去ログ倉庫に格納されています