2016-04-25 31 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;