Perlコーディング初心者質問スレ Part 59at PHPPerlコーディング初心者質問スレ Part 59 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト93:nobodyさん 09/02/21 15:01:05 >>84 SUPERはカレントパッケージの@ISAから探そうとする Can't locate object method "whoami" via package "main" at ./tmp.pl line 19. と言われるようにカレントパッケージがmainなのでwhoamiは見つからない 94:nobodyさん 09/02/21 18:31:27 >>92 同じ名前で呼び出すことにこだわるなら、必要なときに分岐できるように ChildのCをさらにオーバーライドすると思う。 それか、別名で定義するか 95:nobodyさん 09/02/21 18:32:52 訂正、Childのwhoamな 96:nobodyさん 09/02/21 18:34:39 >>89 オブジェクトをハッシュにキーにしてはいけないと聞いたことがある。 何故かはしらね オーバーロードしてるよきに困るからじゃないか? 97:nobodyさん 09/02/21 20:18:48 一から作れるなら、こんな感じか。 PersonをインターフェイスにしてChildに多重継承させてもいいけど、 ちょっとゴチャつきそう。 package Person; sub new { my $class = shift; return bless { @_ }, $class; } sub whoami {} package Parent; use base 'Person'; sub whoami { print "parent\n" } package Child; use base 'Person'; sub new { my ($class, $parent) = @_; return $class->SUPER::new(parent => $parent); } sub whoami { print "child\n" } sub parent { shift->{parent} } package main; my $parent = Parent->new; my $obj = Child->new($parent); $obj->whoami; # child $obj->parent->whoami; # parent 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch