谁能告诉我
shift if(@_)意味着在perl中?
那又是什么
sub id {
my $self = shift;
$self->{ID} = shift if @_;
return $self->{ID};
}卑劣?谢谢。
发布于 2014-06-02 18:49:10
在sub中,没有参数的shift使用@_数组。
所以
$self->{ID} = shift if @_;等于
$self->{ID} = shift(@_) if @_;(从@_数组中删除最左边的元素并将其分配给$self->{ID})
发布于 2014-06-02 18:52:11
它是对象的手动访问器/变体。
print $obj->id; # Accessor form
$obj->id(NEW_VAL); # Mutator form它在功能上相当于:
sub id {
my $self = shift;
if (@_) { # If called with additional parameters, set the value:
$self->{ID} = shift(@_);
}
return $self->{ID};
}发布于 2014-06-02 18:53:26
shift从数组中取出第一个元素并返回它。如果没有给定数组,则在@_上操作,该数组包含函数参数。只有当if @_至少有一个元素时,@_语句修饰符才会导致执行前面的语句。
在您的示例中,$self->{ID} = shift @_ if @_;的意思是“如果存在函数参数,则将其分配给$self->{ID}。
https://stackoverflow.com/questions/24001241
复制相似问题