我最近一直在阅读有关Perl的内容,并且对于Perl如何处理传递给子例程的参数感到有些困惑.
在Python,Java或PHP等语言中,函数定义采用(伪代码)形式:
function myFunc(arg1, arg2) {
// Do something with arg1 and arg2 here
}
Run Code Online (Sandbox Code Playgroud)
然而在Perl中,它只是:
sub mySub {
# @_ holds all arguments passed
}
Run Code Online (Sandbox Code Playgroud)
据我了解,这是唯一的方法.
如果我想限制调用者只传递2个参数怎么办?
这不仅仅是Perl在其他语言(即Python,C等)中不允许任何变量数量参数吗?
在某些时候这不会成为问题吗?
其他语言中的所有默认参数号检查怎么样?是否必须在Perl中明确地做到这一点?例如
sub a_sub {
if (@_ == 2) {
# Continue function
}
else {
return false
}
}
Run Code Online (Sandbox Code Playgroud)perl ×1