リファレンスの初歩テスト。
perlの非常に初歩的な部分を軽くテスト。
早い話、クラスのオブジェクトを
別のクラスのオブジェクトのメンバ変数に入れた時に
勿論リファレンスが渡されるんだよね?って確認。
実験したいこと
- main で 1つのクラスのオブジェクトAを作る
- main で 同じクラスで別のオブジェクトBを作る
- Aのメンバ変数に、オブジェクトBを入れる
- オブジェクトAの中のオブジェクトBの値を「テスト1」にする
- オブジェクトAの中のオブジェクトBの値を表示させる→「test1」と出てくる
- main で オブジェクトBの値を表示させる→「test1」出てくる
- main で オブジェクトBの値を「test2」にする
- オブジェクトAの中のオブジェクトBの値を表示させる→「test2」と出てくる
- main で オブジェクトBの値を表示させる→「test2」出てくる
って訳で、以下を実行。
#!/usr/bin/perl -wuse strict;
use Test;
my $parameterName = 'testString';
my $objTestA = new Test();
my $objTestB = new Test();
$objTestA->setParameter('objTestB', $objTestB);
$objTestA->getParameter('objTestB')->setParameter($parameterName, 'test1');
&showValueInRequest ($objTestA , $objTestB, $parameterName);
$objTestB->setParameter($parameterName, 'test2');
&showValueInRequest ($objTestA , $objTestB, $parameterName);
exit;
sub showValueInRequest {
my $objTestA = shift;
my $objTestB = shift;
my $targetName = shift;
print "objTestB is ${objRequest}\n";
print "objTestB in objTestA is ".$objTestA->getParameter('objTestB')."\n";
print $objTestB->getParameter($targetName)."\n";
print $objTestA->getParameter('objTestB')->getParameter($targetName)."\n";
}
結果。
あぁ、やっぱり main ん中で objTestB 操作しても objTestA ん中にも影響するよね。よし、納得。
objTestB is Test=HASH(0x814cc20)objTestB in objTestA is Test=HASH(0x814cc20)
test1
test1
objTestB is Test=HASH(0x814cc20)
objTestB in objTestA is Test=HASH(0x814cc20)
test2
test2