Perl-13—子程式-3

來源:互聯網
上載者:User

一、子程式的引用:

Perl中不僅可以對標量變數、陣列變數、雜湊變數建立引用,而且也可以對子程式建立引用;子程式的引用類似於C/C++中的函數指標;構造方法如下:

$Pointer_to_Sub = sub {  #函數體 };

這樣就建立了一個對匿名子程式的引用;通過子程式引用調用子程式的文法如下

&$Pointer_to_Sub(參數列表);

1、子程式模板:

有時候可以通過子程式返回不同的子程式引用,可以建立一系列不同的子程式,這樣就可以把操作模板化,這類似於C/C++中的回呼函數,即 CALLBACK函數;

2、數組與子程式:

 由於數組@_是一個一維數組,所以,不管逆傳遞多少個數組給子程式,Perl解譯器都會把你傳遞的數組都轉換成標量值,然後按照你傳遞的順序把這些標量值儲存到數組@_中;同樣,在傳回值中,如果返回的是一個數組,那麼,不管逆封裝多少個子數組到一個列表中,Perl解譯器都會把這些子數群組轉換成標量值,然後儲存到一個一維數組中,供子程式返回;因此,如果按照形如 my (@a,@b) = @_;形式的語句來擷取參數列表值的時候,全部數組值都被賦值給數組@a,而數組@b則為空白數組;這都是因為數組@_是個一維數組;

所以,在傳遞數組給子程式的時候,要注意以下幾點:

◆ 當傳遞給子程式的參數是多個數組時,一定要使用數組的引用;

◆ 不要試圖在子程式中使用形如 (@Array1,@Array2,。。。,@ArrayN)  =  @_;的語句處理參數,除非想要

     把所有參數集中到一個長的數組中;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.