Re: [情報] 作了個 Return::Deep 模組

看板Perl作者 (Cindy Wang)時間4年前 (2020/04/14 21:10), 4年前編輯推噓1(100)
留言1則, 1人參與, 4年前最新討論串2/3 (看更多)
Return::Deep 再加了兩組功能: 第一組是指定 symbol return 好幾層出去的 sym_ret($symbol, @return_values) 和 用來擋下 sym_ret 的 ret_bound {......} $catcher。 $catcher 如果沒指定的話會擋下所有的 sym_ret; 如果是一個字串的話會擋下以同一個字串為 $symbol 的 sym_ret; 如果是一個 regex 的話會擋下可以 match 的 $symbol。 如果 symbol 自己約定好特定的規則,搭配 regex 可以作成階層式的 exception, 但靈活性更高,甚至可以作成 tag 式的 exception。 另一組是 deep_wantarray($depth) 與 sym_wantarray($symbol) 對應 Perl 原生的 wantarray 功能,這是 Perl 的特色 context-sensitive 功能, 可以在真的 return 出去以前, 先探知要接 return 的 caller 想接的是純量還是向量,或是什麼都不接。 ※ 引述《CindyLinz (Cindy Wang)》之銘言: : 抗疫連假窩在家裡寫程式,寫了一個 perl 模組 : 功能是可以指定層數,一次 return 出好幾層函數的「深return」XD : return 出 eval block 的時候也適用 : cpan https://metacpan.org/pod/Return::Deep : github https://github.com/CindyLinz/Perl-Return-Deep : use Return::Deep; : sub a { :  b(); :  # never goes here : } : sub b { :  deep_ret(2, 'Hi', 42); : } : my @ret = a(); : # got ('Hi', 42) here -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.152.79 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1586869827.A.4FE.html ※ 編輯: CindyLinz (1.171.152.79 臺灣), 04/14/2020 21:11:58

04/15 12:12, 4年前 , 1F
剛好在 python 遇到相同問題,推
04/15 12:12, 1F
文章代碼(AID): #1UbRP3J- (Perl)
討論串 (同標題文章)
文章代碼(AID): #1UbRP3J- (Perl)