Perl:如何在不创建副本的情况下将数组引用转换为数组

福特曼

在C#中,可以创建对引用类型的引用:

SomeObject origObj = new SomeObject();
SomeObject objRef = origObj;

origObj和objRef都引用同一个对象。

现在,在perl中:

my @arr = (1,2,3);
method(\@arr);

sub method
{
  my $arr_ref = shift;
  foreach my $element (@{$arr_ref})
  {
     #...
  }
}

我想在方法中使用“ @myArr”,而不必每次都强制转换:“ @ {$ arr_ref}”,并且无需创建数组副本即可执行此操作(因为我的“ @myArr = @ {$ arr_ref}”将创建一个副本)。

总结一下:如何在不创建副本的情况下获取“ @myArr = @ {$ arr_ref}”?

托比墨

如果您很高兴@myArr成为包变量(our)而不是词法变量(my),则可以执行以下操作:

our @myArr;
local *myArr = $arr_ref;

这将使@myArr充当$ arr_ref指向的数组的别名。

如果您需要@myArr词汇,那么可以使用Data :: Alias

use Data::Alias;
alias(my @myArr = @$arr_ref);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Perl:如何在不创建数组副本的情况下取消引用数组?

如何在不转换为Numpy数组的情况下将TensorFlow张量转换为PyTorch张量?

如何在不循环元素的情况下将int数组转换为可为null的int数组?

如何在不更改数组顺序的情况下将数组转换为Rails ActiveRecord :: Relation?

如何在不了解输入和输出数组的情况下将冻结图中的对象检测模型转换为 .tflite

如何在不转换为数组的情况下将数字添加为 firebase 实时数据库子项?

如何在不更改图像的情况下将 3d RGB NumPy 数组转换为浮动?

在 Google 表格中,如何在不破坏文本的情况下将数字转换为数组中的值?

如何在不转换为位图的情况下裁剪包含Y'(亮度)的byte []数组

如何在不创建对象的情况下将Java类转换为json格式结构

如何在不使用键的情况下将json转换为数组

如何在不保存图像的情况下将Numpy数组图像转换为JPEG?

如何在不使用循环的情况下将数组转换为Javascript中的对象?

如何在保持相同顺序的情况下将数组转换为字典

如何在没有警告/错误的情况下将数组转换为ArrayList?

如何在不使用Gson的情况下将JSON转换为数组

如何在不复制元素的情况下将Vec转换为数组?

如何在元素中考虑NaN的情况下将1-d数组转换为nd数组?

如何在不复制的情况下将字节数组转换为整数数组

如何在不直接引用数组名称的情况下从json数组获取数据

如何在不增加OverflowError:Python int太大而无法转换为C long的情况下,将数组中的每个元素与大量相乘?

如何在不复制数组的情况下创建对现有数组的新引用

如何在不制作数组副本的情况下从C ++数组中删除第二个值?

如何在不创建新数组的情况下减小数组大小?

如何在不破坏原始数组的情况下创建新的 JavaScript 数组?

如何在不创建临时表的情况下将 SQL SERVER 中的行转换为列

有没有办法在不创建新的单独数组的情况下将现有的Javascript对象转换为数组?

如何在不保存到文件系统的情况下将 TarArchiveOutputStream 转换为字节数组

如何在没有.toCharArray实例方法的情况下将字符串转换为字符数组