推荐答案
测试一下
题目
返回操作将立刻的从子程序中返回一个值 :
参考答案与知识点
参考答案
如果不存在所要查找的元素,子程序将返回 -1。
原因:Perl 子程序默认返回最后一个求值表达式的值。在 `&which_element_is` 中,如果 `foreach` 循环中没有匹配的元素,则不会执行 `return` 语句,循环结束后代码会继续执行到子程序末尾,此时最后一个执行的表达式是 `-1;`。因此子程序返回 `-1`。
注意代码中 `if($waht eq $array[$_])` 存在拼写错误,`$waht` 应为 `$what`,否则会因未定义变量导致警告或空匹配。
考点与易错点:
1. Perl 子程序返回值规则:无显式 `return` 时返回最后表达式的值。
2. `return` 会立即终止子程序并返回指定值。
3. 循环中 `return` 的使用:一旦找到立即返回,未找到则执行后续代码。
4. `foreach(0..$#array)` 遍历索引,注意 `$#array` 是最后一个元素的索引。
5. 字符串比较必须用 `eq` 而非 `==`,否则会数值化导致逻辑错误。
涉及知识点
- Perl 子程序返回值机制
- return 语句的立即返回作用
- @_ 参数传递与私有变量
- foreach 循环与索引遍历
- 字符串比较 eq 与数值比较 ==