7
sub foo : method { shift->bar(@_) }
: method
這是什麼意思?sub foo使用的語法是什麼:method {shift-> bar(@_)}?
我從來沒有使用過這種方式...
sub foo : method { shift->bar(@_) }
: method
這是什麼意思?sub foo使用的語法是什麼:method {shift-> bar(@_)}?
我從來沒有使用過這種方式...
: method
是function attribute描述。如此標記的子程序不會觸發「作爲CORE ::%s解析的模糊調用」警告。
從ysth的評論:
警告發生在子具有相同的名稱作爲內置,它被稱爲無&,而不是作爲一個方法調用。 perl使用內建代替,但是會發出警告。 The:方法使警告靜音,因爲它清楚地表明sub從未打算作爲非方法被調用。
更新
此代碼只是調用方法bar
時foo
叫做:
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(@_);
}
什麼' sub foo:方法{shift-> bar(@_)}'作爲一個整體來表示? – asker
我已經添加了更多詳細信息 –
它似乎仍然沒有'method'屬性,對吧? – asker