是否可以将数组变量分配给数组引用而不是标量变量?
而不是:
($a, $b) = some_sub(\@d, \@e);
我想要这样的事情:
(@x, @y) = some_sub(\@x1, \@y1);
如果是这样,我怎样才能取消引用它。就像前者@$xxxx
为我们做的那样。
感谢。
答案 0 :(得分:7)
你可以分两步完成(实际上是3行):
my ($x_ref, $y_ref) = some_sub(\@x1, \@y1);
my @x = @{ $x_ref };
my @y = @{ $y_ref };
问题是 - 简单地抛弃直接数组并开始在任何地方使用引用都不简单吗?
答案 1 :(得分:4)
引用是一个标量(根据定义),即使它所指的不是。所以我不太清楚你的意思是“将数组变量赋给数组引用而不是标量变量”。您可以push
将数组引用到正常数组中作为成员,然后直接取消引用它们。您还可以从子例程返回引用。
您可以取消引用分配中子例程的返回值。我想知道这是不是你想要做的事情?
my @array = @{ some_sub() };
请注意,正如Axeman在下面评论这不是一个好主意或特别必要。如果您真正想要的是将项目从子例程中取出然后放入数组中,Depesz's suggestion就是您需要的东西。
我强烈推荐perldoc perlreftut
作为Perl中引用的介绍。您还可以查看perldoc perllol
和perldoc perldsc
。
如果你解释一下你真正想要做什么以及为什么这可能会有所帮助?