Perl是支持按返回类型重载函数的语言之一.
简单的例子是wantarray().
CPAN中几乎没有很好的模块可以扩展这个wantarray()并为许多其他返回类型提供重载.这些模块是Contextual :: Return and Want.不幸的是,我不能使用这些模块,因为这两个模块都没有使用perl版本5.8.9的perl评论家(我无法升级这个perl版本).
所以,我正在考虑像Contextual :: Return和Want一样编写我自己的模块,但却非常简单.我试图理解Contextual :: Return和Want模块代码,但我不是专家.
我需要函数重载只返回类型BOOL,OBJREF,LIST,SCALAR.
请通过提供一些指导帮助我,我该如何开始.
与Perl的语法一起使用的模块Contextual::Return以及Want完成的方式几乎必然会受到影响Perl::Critic.在这种情况下,主要的违法行为偶尔会被禁用strict并使用最小的子程序原型.
我个人认为这是一个愚蠢的规则,坚持所有代码必须通过任意一组测试,没有例外,但我也认为任何代码根据调用它的上下文而行为可能设计得很糟糕而且难以理解和维护.很少看到甚至wantarray使用过,因为Perl通常会做正确的事情而不必解释.
我想你可能遇到过一个看起来很有趣的模块,并希望以某种方式将它合并到你的代码中.你能通过展示一个需要进行全面的上下文检查的子程序的例子来改变主意吗?