perl - 处理 Perl 子例程的多个参数
问题描述
正如我所读到的,“这个子例程还有另一个问题。这个子例程只有在恰好用两个调用时才能正常工作
多余的参数被忽略——因为子程序从不查看
$_[2]
“
但是当我传递多个参数时它的工作,所以我无法得出上述陈述,所以任何人都可以帮助我解决这个问题。
sub privacy{
$_[0]+$_[1]+$_[2]+$_[3];
}
$x=&privacy(3,4,5,6);
print $x,"\n";`
预期的:
7
实际的:
18
但这个结果是矛盾的。
解决方案
我认为您正在阅读Learning Perl。我们提出了一个查找两个参数的最大值的子程序。它看起来像这样:
sub max {
if( $_[0] > $_[1] ) { ... }
else { $_[0] }
}
如果你用两个参数调用它,它会起作用:
max( 1, 2 )
max( 5, 6 )
max( 9, 0 )
如果您使用三个参数调用它,则该特定子例程将忽略第三个参数,因为该特定子例程仅查看前两个:
max( 1, 2, 3 ) # ignores 3, so returns 2
您可以编写一些其他子程序来查看更多参数,但这是一个不同的子程序。
除非你另外告诉 Perl(我将在这里忽略它),它会接受尽可能多的参数,并且它们都显示在特殊变量@_
中。你如何使用它取决于你。
推荐阅读
- loops - 输入无效的布尔值会导致 infin 错误。循环并阻止我输入更多信息
- ios - 如何防止 App Store Connect 询问仅 iPad 应用程序的 iPhone 屏幕截图?
- google-analytics - 如何从 Google Analytics Data API (GA4) 获取 UA 指标数据
- amazon-waf - 限制对 route53 托管区域子域的访问
- apache-spark - “spark.python.worker.memory”和“spark.executor.pyspark.memory”有什么区别?
- reactjs - 在 Form.Control 中加载文本
- java - 嗨,我有包含列名作为键和列值作为值的 Map,我该如何通过 PreparedStatement 来做呢?
- php - preg-replace 的问题:函数替换整个字符串而不是仅替换其中的一部分
- python - 如何使用类别列和值列转换熊猫中的数据框
- php - 使用 wp_list_comments() 在 wordpress 中使用元键过滤评论