私は Perl で多くのクラスを使用/作成してきましたが、それらで行う必要がある一般的なことの 1 つは、親オブジェクトの特定のプロパティにアクセスすることです。たとえば、Class_A と Class_B があり、これらは次のように単純であるとします。
Class_A.pm
package Class_A;
use strict;
use warnings;
sub new {
my $class = shift;
my $this = {
history_data => [],
};
bless $this, $class;
}
Class_B.pm
package Class_B;
use strict;
use warnings;
sub new {
my $class = shift;
my $this = {
history_data => [],
};
bless $this, $class;
}
Class_A はuse
Class_B になり、プロパティとしてインスタンスを作成できます。どちらもプロパティhistory_data
を持っていますが、Class_B が Class_A のインスタンスによって作成されたインスタンスである場合、Class_B をhitory_data
その親オブジェクトで使用したいと考えています。
したがって、私がこれまで行ってきたことは、次のように、子インスタンスを作成するときに参照を渡すことだけです。
#!/usr/bin/perl
use strict;
use warnings;
use Class_A;
use Class_B;
my $class_a = new Class_A;
$class_a->{instance_of_B} = new Class_B parent => $class_a;
私はそれを非常に単純にしていますが、Class_B を使用する必要がある場合、そのインスタンスは Class_A 内の何らかのメソッドによって作成できます。ここで重要なのは、Class_B には独自のプロパティがありますが、親である場合は Class_A のプロパティを使用することです。
それはうまくいきますが、親参照を子に渡さずにそれを行う方法が存在するかどうか、何度か疑問に思いました。親オブジェクトを呼び出す Perl で既に実装されている方法のようなものです。
それで、それは私の質問です。参照を直接受け取らずに、Class_B がその親 Class_A のインスタンスにアクセスする方法はありますか?
ありがとう。:-)
編集:それを置く別の方法はこれです:
参照を渡さずに Class_B が「私は現在 Class_B のインスタンスであり、Class_A のプロパティに住んでおり、現在独自のプロパティに x、y、および z の値がある」と言う方法はありますか?