引用

2018-02-24 16:03 更新

引用是引用其他變量的標(biāo)量

引用像 C 中引用其他變量的指針。使用?\?操作符創(chuàng)建引用。

my $sref = \$scalar;
my $aref = \@array;
my $href = \%hash;
my $cref = \&subroutine;

引用指向的事物即其所指。

使用合適的印記解引用,首選使用花括號。

my $other_scalar = ${$sref};
my @other_array  = @{$aref};
my %other_hash   = %{$href};
&{$cref} # Call the referent.

用箭頭符解引用更容易

要訪問數(shù)組和哈希引用,使用?->?操作符。

my $stooge = $aref->[1];
my $stooge = $href->{Curly};

ref vs. isa

  • 一個引用屬于一個類
  • 你可以使用?ref?查檢類
  • 一個對象引用能從其他類繼承
  • 你可以使用?isa?來詢問一個對象是否繼承自一個類
  • 沒有好理由不要用?ref
  • isa?是?UNIVERSAL?包的一部分,因此你可以在對象上調(diào)用它
my $mech = WWW::Mechanize->new;
print "ok\n" if $mech->isa('LWP::UserAgent');

引用匿名子例程

子例程能被賦給變量,并被調(diào)用,以允許代碼引用被傳遞及使用。這將十分有用, 比如編寫需要執(zhí)行所提供代碼的子例程。

my $casefix = sub { return ucfirst lc $_[0] };

my $color = $casefix->("rED");
print "Color: $color\n"; # prints Red
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號