如何创建一个接受多个块的Perl子例程?
发布时间:2020-12-15 21:48:55 所属栏目:大数据 来源:网络整理
导读:使用原型,您可以创建一个子程序,接受一段代码作为其第一个参数: sub example () { my $code_ref = shift; $code_ref-();}example { print "Hellon" }; 我怎么能做同样的事情,但有多个代码块?我想使用代码块,而不是变量或子{…}. 这不起作用: sub example
使用原型,您可以创建一个子程序,接受一段代码作为其第一个参数:
sub example (&) { my $code_ref = shift; $code_ref->(); } example { print "Hellon" }; 我怎么能做同样的事情,但有多个代码块?我想使用代码块,而不是变量或子{…}. 这不起作用: sub example2 (&&) { my $code_ref = shift; my $code_ref2 = shift; $code_ref->(); $code_ref2->(); } example2 { print "Onen" } { print "Hellon" }; 它给出了这个错误: Not enough arguments for main::example2 解决方法
我希望你意识到这只是代码调料,而你所实现的只是一种更整洁的语法而牺牲了清晰度?
Perl不允许您将多个裸块传递给子例程,但第二个实际参数可能是对子例程的调用,该子例程也占用一个块并简单地返回代码引用. 这个程序演示.请注意,我已选择了please,也作为子程序的名称.但是你必须使用适合你自己的代码功能的东西,并且不太可能与即将到来的核心语言扩展冲突. use strict; use warnings; sub please(&$) { my ($code1,$code2) = @_; $code1->(); $code2->(); } sub also(&) { $_[0]; } please { print "aaan" } also { print "bbbn" }; 产量 aaa bbb (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |