Perl,移位if(@_)

Tha*_*ius 2 perl

有人能告诉我什么

shift if(@_)
Run Code Online (Sandbox Code Playgroud)

perl意味着什么?

那会是什么呢?

sub id {
   my $self = shift;
   $self->{ID} = shift if @_;

   return $self->{ID};
}
Run Code Online (Sandbox Code Playgroud)

意思?谢谢.

Mil*_*ler 5

这是一个对象的手动访问器/ mutator

print $obj->id;       # Accessor form
$obj->id(NEW_VAL);    # Mutator form
Run Code Online (Sandbox Code Playgroud)

它在功能上等同于:

sub id {
    my $self = shift;
    if (@_) { # If called with additional parameters, set the value:
         $self->{ID} = shift(@_);
    }
    return $self->{ID};
}
Run Code Online (Sandbox Code Playgroud)