Perl子程式引用和匿名子程式

來源:互聯網
上載者:User

標籤:數組   介紹   \n   程式   調用   ...   one   llb   沒有   

子程式也有引用,也有匿名子程式。假設你已經具備了數組、hash的引用知識,所以這裡簡單介紹一下。

$ref_sub = \&mysub;      # 子程式引用,&符號必須不能少&{$ref_sub}(ARGS)        # 解除子程式引用,傳遞參數ARGS&$ref_sub(ARGS)          # 解除子程式引用$ref_sub->(ARGS)         # 解除子程式引用$ref_sub->()             # 傳遞空參數sub {...};               # 定義匿名子程式,sub後面沒有名稱$ref_sub = sub {...};    # 匿名子程式的引用

有了子程式引用,就可以按需調用子程式。

例如:

sub java_learn {    print "Learning Java now\n";}sub perl_learn {    print "Learning Perl now\n";}sub python_learn {    print "Learing Python now\n";}%sub_hash=(    "javaer"   => \&java_learn,    "perler"   => \&perl_learn,    "pythoner" => \&python_learn,);while(my ($who,$sub)=each %sub_hash){    print "$who is learning\n";    $sub->();}

改成匿名子程式:

$javaer = sub {    print "Learning Java now\n";};$perler = sub {    print "Learning Perl now\n";};$pythoner = sub {    print "Learing Python now\n";};foreach (qw(javaer perler pythoner)){    print "$_ is learning\n";    $$_->();}

甚至,將匿名子程式作為資料結構的一部分:

%sub_hash = (    "javaer" => sub {        print "Learning Java now\n";    },    "perler" => sub {        print "Learning Perl now\n";    },    "pythoner" => sub {        print "Learning Python now\n";    },);while( my($who,$sub)=each %sub_hash ){    print "$who is learning\n";    $sub->();}

子程式引用、匿名子程式的最大作用可能是用於回呼函數(callback)、閉包(closure)。這個話題有點大,見下一篇文章。

Perl子程式引用和匿名子程式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.