在另一个Stack Overflow问题中, Leon Timmermans断言:
我建议你不要使用原型.它们有它们的用途,但对大多数情况并非如此,绝对不是在这个例子中.
为什么这可能是真的(或其他)?我几乎总是为我的Perl函数提供原型,而且我从来没有见过其他任何人说使用它们的坏事.
想为一些外来的perl模块写一个简单的包装器.简化示例:
use 5.014;
use warnings;
#foreign package
package Some {
sub func {
my($x,$y) = @_;
return $x.$y;
}
};
#my own packages
package My {
#use Some ();
sub func { Some::func(@_); }
}
package main {
#use My;
say My::func("res","ult");
}
Run Code Online (Sandbox Code Playgroud)
这工作正常并打印result.
但现在我遇到了一个使用原型的模块,例如上面的内容如下:
package Some {
sub func($$) { # <-- prototype check
my($x,$y) = @_;
return $x.$y;
}
};
Run Code Online (Sandbox Code Playgroud)
当试图使用My包装器包时 - 它说:
Not enough arguments for Some::func at ppp line 16, near "@_)" …Run Code Online (Sandbox Code Playgroud)