2016-04-25 4 views
0

私はPerl言語の新版です。

は、Javaでそれを関連付けることによって説明できるならば、誰もが次のサブルーチンを説明することができ、my ($self, $firstName)$self->{_firstName}の違いは何であるか、それが参考になる:

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

'$のself'は'これである:

はそれは引数を使用しない、それを得るために

$object->setFirstName("name"); 

を使用し、ファーストネームを設定するには

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

のようなものに対応します'と言っていますが、javaとは違ってperlは明示的な代入が必要です –

+0

@Сухой27ありがとう! –

答えて

2

my ($self, $firstName) =は、2つの変数を定義し、それらから値が割り当てられ代入演算子の右側にリストがあります。

$self->{_firstName} =は、$selfの値をハッシュリファレンスとして扱い、参照するハッシュの_firstNameキーに値を割り当てます。

+0

は感謝します、ありがとう!! –

+3

'setFirstName'はメソッドであり、' $ self'はメソッドを呼び出すオブジェクトであることを説明すると役に立ちます。 – ThisSuitIsBlackNot

3

これはアクセサー(ゲッターとセッターを同時に定義する)の一般的な方法です。その名前はちょっとだけ誤解を招く、それは設定者ではないからです。

my $name = $object->setFirstName; 
関連する問題