我将调用我的subs而不使用参数列表中的括号。例如,我想用
mypush \@list, $item;而不是
mypush(\@list, $item);为了做到这一点,我已经声明我的潜艇有一个原型。
sub mypush (+@) { push shift, @_ }事实上,这也允许我做以下几点,但这只是一个额外的好处:
mypush @list, $item;除了在代码中的任何地方使用原型之前都必须声明带有原型的子程序之外,在Perl中使用原型有什么严重的缺陷吗?
在我看来代码绝对更干净。但是,一般来说,原型会在哪里出错呢?我什么时候会后悔?
发布于 2015-08-06 09:37:05
最大的缺点之一是它使代码更难维护。很少有人知道Perl原型实际上做了什么,所以他们周围有很多猜测和货物剔除。
但是请注意,Perl5.20添加了一个子程序签名特性。它仍然是实验性的,但它真的很棒,和大多数人期望的原型所做的。而且,当我们添加类型约束时(哦,圣诞老人,请给我带来那些圣诞礼物--我保证我会做得很好!),我们会有我认为大多数人尝试用原型做的事情(用我编的一些语法):
sub foo (Int $foo, String $var, Int @array) { ... }https://stackoverflow.com/questions/31837759
复制相似问题