perl – sub foo使用的语法是什么:method {shift-> bar(@_)}?

前端之家收集整理的这篇文章主要介绍了perl – sub foo使用的语法是什么:method {shift-> bar(@_)}?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sub foo : method { shift->bar(@_) }

什么:方法在这里意味着什么?

我从来没用过这种方式……

解决方法

方法function attribute描述.如此标记的子程序不会触发“不明确的调用解析为CORE ::%s”警告.

ysth评论

The warning happens when the sub has the same name as a builtin and it is called without & and not as a method call; perl uses the builtin instead but gives a warning. The :method quiets the warning because it clearly indicates the sub was never intended to be called as a non-method anyway.

更新

调用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(@_) – 使用所有其他参数调用相同的类方法

你可以这样读:

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

猜你在找的Perl相关文章