2016-04-25 114 views
0

我是Perl语言的新手。

任何人都可以解释以下子程序,就是my ($self, $firstName)$self->{_firstName}之间的区别,这将是有益的,如果你可以与Java相关来解释:

sub setFirstName { 
    my ($self, $firstName) = @_; 
    $self->{_firstName} = $firstName if defined($firstName); 
    return $self->{_firstName}; 
} 
+1

'$ self'是'这',但Perl不像java需要明确的分配。 –

+0

@Сухой27谢谢!! –

回答

2

my ($self, $firstName) =定义了两个变量,并赋予它们从值列表在赋值运算符的右侧。

$self->{_firstName} =$self的值作为散列参考,并将值指定给它引用的散列的_firstName键。

+0

有道理,谢谢! –

+3

这可能有助于解释'setFirstName'是一个方法,'$ self'是调用该方法的对象。 – ThisSuitIsBlackNot

3

这是定义访问器(getter和setter同时)的常用方法。它的名字有点误导,因为它不仅仅是一个setter。

它对应于像

class Whatever { 

    private String firstName; 

    public String setFirstName (String newName) { 
     firstName = newName; 
     return firstName; 
    } 

    public String setFirstName() { 
     return firstName; 
    } 

} 

要设置的名字,使用

$object->setFirstName("name"); 

为了得到它,不使用参数:

my $name = $object->setFirstName; 
相关问题