[英]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 perllol
和perldoc perldsc
。
如果你解释一下你真正想要做什么以及为什么这可能会有所帮助?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.