嘿.在Python中我可以这样做:
def fnuh():
a = "foo"
b = "bar"
return a,b
Run Code Online (Sandbox Code Playgroud)
我可以在perl中以类似优雅的方式返回一个列表,特别是当子例程的返回类型应该是对数组的引用时?
我知道我能做到
sub fnuh {
my $a = "foo";
my $b = "bar";
my $return = [];
push (@{$return}, $a);
push (@{$return}, $b);
return $return;
}
Run Code Online (Sandbox Code Playgroud)
但我敢打赌,在Perl中有更好的方法.你知道吗?
当然,只需\在列表前面敲击一个以返回引用.
或者用一个新的arrayref [ list elements ].
在你的例子中,
sub f1 {
my $a = "foo";
my $b = "bar";
return [ $a, $b ];
}
sub f2 {
my $a = "foo";
my $b = "bar";
push @return, $a, $b;
return \@return;
}
Run Code Online (Sandbox Code Playgroud)
有关参考文献的更多信息,请参阅perldoc perlreftut和perldoc perlref.perldoc perldsc还有一个数据结构食谱.
您可能还想在perlfaq中阅读这个问题(感谢brian):"列表和数组之间有什么区别?"
Python自动打包和解包模拟列表的赋值周围的元组.在Perl中,您可以以相同的方式编写它,返回一个列表.
sub fnuh {
my $a = 'foo';
my $b = 'bar';
$a, $b
}
Run Code Online (Sandbox Code Playgroud)
然后使用结果:
my ($x, $y) = fnuh;
Run Code Online (Sandbox Code Playgroud)
或者如果您需要参考:
my $ref = [ fnuh ];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |