是否可以将数组变量赋值给数组引用而不是标量变量?
而不是这样:
($a, $b) = some_sub(\@d, \@e);我想要这样的东西:
(@x, @y) = some_sub(\@x1, \@y1);如果是这样的话,我怎么能像以前那样去引用it.where,@$xxxx为我们做了呢?
谢谢。
发布于 2009-10-07 11:38:26
你可以通过2个步骤(实际上是3行)来完成:
my ($x_ref, $y_ref) = some_sub(\@x1, \@y1);
my @x = @{ $x_ref };
my @y = @{ $y_ref };问题是-简单地抛弃直接数组,并开始到处使用引用,不是更简单吗?
发布于 2009-10-07 11:35:51
引用是标量(根据定义),即使它所指的不是标量,所以我不太确定您所说的“将数组变量赋值给数组引用而不是标量变量”是什么意思。您可以将数组引用作为成员push到普通数组中,然后直接取消对它们的引用。您还可以返回子例程中的引用。
您可以取消对赋值中子例程的返回值的引用。我想知道这是否是你想要做的事情?
my @array = @{ some_sub() };注意,正如Axeman在下面评论的那样,这本身并不是一个好主意,也不是特别必要。如果您真正想要的是将项从子例程中取出,然后放入数组中,那么Depesz's suggestion就是您所需要的。
我强烈推荐将perldoc perlreftut作为Perl语言中的引用的介绍。您可能还会查看perldoc perllol和perldoc perldsc。
如果你解释一下你真正想做的是什么以及为什么,这可能会有所帮助。
https://stackoverflow.com/questions/1531003
复制相似问题