我知道,如果没有显式return,则返回最近评估的表达式,但我不清楚它在这段代码中是如何应用的.
use strict;
use warnings;
sub f1 {
return "test 1\n";
}
sub f2 {
f1();
}
sub f3 {
f2();
}
my $r = f3();
print $r; # prints "test 1"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,返回的值来自内部二级调用.我正在寻找一个参考来解释关于这一点的规则.如何确定上下文评估的功能?
评估并返回最后一个"表达式"
这就是它的全部.
$r被赋予评估结果f3().
sub f3没有return语句,因此它返回评估最后一个语句的结果,即f2().
sub f2没有return语句,因此它返回评估最后一个语句的结果,即f1().
f1 确实有一个显式的return语句,所以它返回该字符串.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |