1

次のようなテストファイルがあります。

my $int = new Services::Plugins::FTP::ftp;
$int->AddUser("durr");

モジュールには次のコードがあります。

sub AddUser {

my( @username ) = @_;
print "@_\n";  

}

しかし、私の結果は次のようになります: Services::Plugins::FTP::ftp=HASH(0x2490160)durr

私はただ「ダー」が欲しい。

なぜ私は余分なものを手に入れているのですか?

4

3 に答える 3

9

オブジェクト指向の Perl を扱っています。の場合のように、オブジェクト インスタンスで関数を呼び出す場合、$instance->function()最初のパラメーターはインスタンス自体への参照です。ほとんどの場合、 と呼ばれ$selfます。

一般的に使用されるイディオムは、次のようにインスタンス メソッドを記述することです。

sub some_method {
  my ($self, @args) = @_;
}

perlootut の man ページで Perl のオブジェクト指向システムについて読むことをお勧めします(良いチュートリアルです)。

于 2012-10-15T16:22:32.577 に答える
5

への最初の引数$foo->bar()$foo

sub AddUser {
    my($self, @username ) = @_;
    print "@_\n";  
}
于 2012-10-15T16:22:55.963 に答える
3

オブジェクト指向アプローチを使用しています($int->AddUser("durr")メソッド呼び出しです)。メソッドを呼び出すとき、最初の引数は常にメソッドが適用されるオブジェクトまたはクラスです。

于 2012-10-15T16:23:36.607 に答える