首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将子例程调用的结果赋值给Perl中的数组引用?

如何将子例程调用的结果赋值给Perl中的数组引用?
EN

Stack Overflow用户
提问于 2009-10-07 11:18:15
回答 2查看 266关注 0票数 3

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

而不是这样:

代码语言:javascript
复制
($a, $b) = some_sub(\@d, \@e);

我想要这样的东西:

代码语言:javascript
复制
(@x, @y) = some_sub(\@x1, \@y1);

如果是这样的话,我怎么能像以前那样去引用it.where,@$xxxx为我们做了呢?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2009-10-07 11:38:26

你可以通过2个步骤(实际上是3行)来完成:

代码语言:javascript
复制
my ($x_ref, $y_ref) = some_sub(\@x1, \@y1);
my @x = @{ $x_ref };
my @y = @{ $y_ref };

问题是-简单地抛弃直接数组,并开始到处使用引用,不是更简单吗?

票数 7
EN

Stack Overflow用户

发布于 2009-10-07 11:35:51

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

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

代码语言:javascript
复制
my @array = @{ some_sub() };

注意,正如Axeman在下面评论的那样,这本身并不是一个好主意,也不是特别必要。如果您真正想要的是将项从子例程中取出,然后放入数组中,那么Depesz's suggestion就是您所需要的。

我强烈推荐将perldoc perlreftut作为Perl语言中的引用的介绍。您可能还会查看perldoc perllolperldoc perldsc

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1531003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档