私はちょうどいくつかのゲッターとセッターメソッドを持っている小さなクラスを書いています。これらのプロパティの1つはハッシュです。オブジェクトからハッシュにアクセスする方法
sub getMyData
{
my $objekt = shift;
return $objekt->{MYDATA};
}
sub setMyData
{
my $objekt = shift;
my %myData= shift;
$objekt->{MYDATA} = \%myData;
}
私は私のクラスにアクセスする別のskriptでこのように値を設定する場合:私はちょうどundefを取得
my $data = $objekt->getMyData;
print $data{'apple'};
:
my %test;
$test{'apple'}='red';
$objekt = MYNAMESPACE::MYCLASS->new;
$objekt->setMyData(%test);
私は私が経由して簡単にこの値にアクセスすることができます思いました値。ダンパから
誰かがここで間違って何を教えてもらえますし、どのように私はgetMyDataにアクセスし、値が「赤」を印刷することができますか?
をed ') 'を' setMyData'に変換します。それはおそらくあなたがしたいことではありません。あなたは 'setMyData(\%test)'を意味するかもしれません。しかし、通常はオブジェクトを使用するときは、ハッシュを前後に渡すのではなく、 'get_data_value( 'apple')'メソッドを使用します。 – Sobrique
コード内の名前は恐ろしいです。ドイツ語の変数名はうまくいけばOKですが、あなたが従うべきベストプラクティスがいくつかあります。 Perl OOPでは、オブジェクトは通常 '$ self'と呼ばれます。 'MYDATA'のような全大文字の名前は、通常、定数にしか使われません(しかし、まれにしか使われません)。 Perlの世界では、CamelCaseではなく変数や関数に名前を付けるのが好きですが、代わりに 'set_my_data'のようなアンダースコアを使用します。それ以外に、あなたは[perlref](http://perldoc.perl.org/perlref.html)と[perlreftut](http://perldoc.perl.org/perlreftut.html)を見てください。 – simbabque
あなたはアクセスしています%dataではなく%data。宣言されていない変数を使用しないようにするには、コードの先頭に 'use strict;'を入れてください – ysth