按返回类型重载函数



Perl是这样的语言之一,它支持返回类型的函数重载。

这方面的简单例子是wantarray((。

CPAN 中很少有可用的好模块,它扩展了这个 wantarray(( 并为许多其他返回类型提供重载。这些模块是上下文::返回和想要。不幸的是,我不能使用这些模块,因为这两个模块都失败了perl版本5.8.9的perl批评器(我无法升级这个perl版本(。

所以,我

正在考虑编写我自己的模块,如Contextual::Return and Want,但非常少。我试图理解上下文::返回和想要模块代码,但我不是专家。

我只需要返回类型布尔、OBJREF、列表、标量函数重载。

请通过提供一些指南来帮助我,我该如何开始。

Contextual::ReturnWant 的方式使用 Perl 语法的模块几乎肯定会违反Perl::Critic。在这种情况下,主要的违规行为是偶尔禁用strict并使用子例程原型,这些原型是最小的。

我个人认为,坚持所有代码都必须通过一组任意的测试,没有例外,这是一个愚蠢的规则,但我也认为,任何根据调用上下文而行为非常不同的代码都可能设计糟糕,难以理解和维护。很少看到甚至wantarray使用,因为 Perl 通常做正确的事情,而不需要你解释。

我想您可能遇到过一个看起来很有趣的模块,并希望以某种方式将其合并到您的代码中。您能否通过展示一个需要您描述的全面上下文检查的子例程示例来改变我的想法?

最新更新