定義 Perl 類的成員函式


其他面向物件的語言有資料安全的概念,以防止程式設計師直接更改物件資料,並提供訪問器方法修改物件資料。Perl 沒有私有變數,但我們仍然可以使用輔助方法的概念操作物件資料。

讓我們定義一個獲取個人姓名的輔助方法 −

sub getFirstName {
   return $self->{_firstName};
}

另一個設定個人姓名的輔助函式 −

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

現在讓我們來看看完整的示例:將“Person”包和輔助函式保留在 Person.pm 檔案中。

#!/usr/bin/perl
package Person;
sub new {
   my $class = shift;
   my $self = {
      _firstName => shift,
      _lastName => shift,
      _ssn => shift,
   };
   # Print all the values just for clarification.
   print "First Name is $self->{_firstName}\n";
   print "Last Name is $self->{_lastName}\n";
   print "SSN is $self->{_ssn}\n";
   bless $self, $class;
   return $self;
}
sub setFirstName {
   my ( $self, $firstName ) = @_;
   $self->{_firstName} = $firstName if defined($firstName);
   return $self->{_firstName};
}
sub getFirstName {
   my( $self ) = @_;
   return $self->{_firstName};
}
1;

現在,讓我們如下在 employee.pl 檔案中使用 Person 物件 −

#!/usr/bin/perl
use Person;
$object = new Person( "Mohammad", "Saleem", 23234345);
# Get first name which is set using constructor.
$firstName = $object->getFirstName();
print "Before Setting First Name is : $firstName\n";
# Now Set first name using helper function.
$object->setFirstName( "Mohd." );
# Now get first name set by helper function.
$firstName = $object->getFirstName();
print "Before Setting First Name is : $firstName\n";

執行以上程式時,會產生以下結果 −

First Name is Mohammad
Last Name is Saleem
SSN is 23234345
Before Setting First Name is : Mohammad
Before Setting First Name is : Mohd.

更新於:02-Dec-2019

371 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告