Perlについての質問箱 39箱目at TECHPerlについての質問箱 39箱目 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト207:1/2 09/03/03 17:18:15 $iがゴニョゴニョとか$_って何よ?とかあるが…それを差し引いて どのレベルでのカプセル化を言っとるんだ? その例だと、呼出元にて、$obj->{obj_num} = 10 ; とかしてobj_numに 直接代入可能だから、その点ではカプセル化されたとは言えん。 只、編集とか継承とかしない限りにおいて、$ch{$obj->{obj_num}} には アクセス出来ん事だけは確かだ。ゲッタねえし。 インサイドアウトオブジェクトレベルの意味ならば以下に簡単な例。 Hoge2は(恐らく)貴方の目指してた物をインサイドアウトで実現してる。 new時に投入した'hoge'がアクセサを介さず変えられるか?がポイント。 package Hoge; #=== カプセル前 === sub new { bless { data => pop }, shift ; } sub setter { shift->{data} = pop ; return ; } sub getter { shift->{data} } 1; package Hoge2; #=== カプセル後 === use Scalar::Util qw(refaddr) ; my %hash ; sub new { my $obj = bless \do{''}, shift ; $hash{ refaddr $obj } = shift ; $obj ;} sub getter { $hash{ refaddr shift} ; } sub setter { $hash{ refaddr shift} = pop ; return ; } sub DESTROY { delete $hash{ refaddr shift } ; } 1; 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch