繁体   English   中英

如何将子例程调用的结果分配给Perl中的数组引用?

[英]How can I assign the result of a subroutine call to array references in Perl?

是否可以将数组变量赋值给数组引用而不是标量变量?

而不是这个:

($a, $b) = some_sub(\@d, \@e);

我想要这样的东西:

(@x, @y) = some_sub(\@x1, \@y1);

如果是这样,我怎么能取消引用它。就像前者一样, @$xxxx为我们做了。

谢谢。

你可以分2步完成(实际上3行):

my ($x_ref, $y_ref) = some_sub(\@x1, \@y1);
my @x = @{ $x_ref };
my @y = @{ $y_ref };

问题是 - 简单地抛弃直接数组并开始在任何地方使用引用都不简单吗?

引用是标量(根据定义),即使它所引用的不是。 所以我不太清楚你的意思是“将数组变量赋给数组引用而不是标量变量”。 您可以push数组引用作为成员push送到普通数组中,然后直接取消引用它们。 您还可以从子例程返回引用。

您可以取消引用赋值中子例程的返回值。 我想知道这是不是你要做的事情?

my @array = @{ some_sub() };

请注意,正如Axeman在下面评论这不是一个好主意或特别必要。 如果您真正想要的是将项目从子程序中取出然后再放入数组中, Depesz的建议就是您需要的东西。

我强烈推荐perldoc perlreftut作为Perl中引用的介绍。 你也可以看看perldoc perllolperldoc perldsc

如果你解释一下你真正想要做什么以及为什么这可能会有所帮助?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM