2011-08-24 4 views

答えて

11

: methodfunction attribute説明です。このようにマークされたサブルーチンは、 "CORE ::%sとして解決されたあいまいな呼び出し"警告をトリガーしません。

ysthのコメント

サブは組み込みと同じ名前を持ち、それが&なしではなくメソッド呼び出しとして呼び出されたときに警告が発生しました。 perlは代わりに組み込み関数を使用しますが、警告を出します。 :メソッドは、サブメソッドが決して非メソッドとして呼び出されることを意図していないことを明確に示しているため、警告をクイックにします。

更新

このコードは、単にfooが呼び出されるメソッドbar呼び出します

sub foo : method { ## Mark function as method 
    shift->bar(@_) ## Pass all parameters to bar method of same object 
} 

詳細:

  • : method - 参照サブルーチンがメソッドであることを示します。このようにマークされたサブルーチンは、 "CORE ::%sとして解決されたあいまいな呼び出し"警告をトリガーしません。
  • shiftから$self
  • ->bar(@_)される、@_から最初のパラメータを取得します - 他のすべてのパラメータ

と同じクラスメソッドbarを呼び出すあなたはこれを読むことができます:

`を何
sub foo : method { 
    my ($self) = shift @_; 
    return $self->bar(@_); 
} 
+0

sub foo:method {shift-> bar(@_)} '全体としての意味ですか? – asker

+0

私は詳細を追加しました –

+0

'method'属性なしでもまだ動作しているようですね。 – asker

関連する問題