Arrays 在一条语句中取消对数组中的数组的引用?
可以在一个语句中执行第2行和第3行吗Arrays 在一条语句中取消对数组中的数组的引用?,arrays,perl,multidimensional-array,dereference,Arrays,Perl,Multidimensional Array,Dereference,可以在一个语句中执行第2行和第3行吗 我试过@arr2=@$arr1[0]但它不会编译。由于优先规则,您必须添加大括号 @arr1 = ([1,2,3], 4, 5, 6); $arr_ref = $arr1[0]; @arr2 = @$arr_ref; 从 说到像@{$AoA[$i]} […] 这是因为Perl在其五个前缀解引用器(看起来像有人在咒骂:$@*%&)上的优先级规则使它们比后缀的下标括号或大括号绑定得更紧 这意味着,如果不需要显式索引,那么就不需要{},例如在已经检索数组元素的
我试过
@arr2=@$arr1[0]代码>但它不会编译。由于优先规则,您必须添加大括号
@arr1 = ([1,2,3], 4, 5, 6);
$arr_ref = $arr1[0];
@arr2 = @$arr_ref;
从
说到像@{$AoA[$i]}
[…]
这是因为Perl在其五个前缀解引用器(看起来像有人在咒骂:$
@
*
%
&
)上的优先级规则使它们比后缀的下标括号或大括号绑定得更紧
这意味着,如果不需要显式索引,那么就不需要{}
,例如在已经检索数组元素的代码中。例如,要展平包含arrayrefs的数组,请单击per的注释
@arr2 = @{$arr1[0]};
要仅检索arrayrefs的内容,可以在块内的三元运算符中使用:()
而不是:$。
。()
返回一个空列表,该列表在结果中变平,因此不会影响它。(当条件计算为false时,必须返回一些内容。此技巧允许map
执行grep
的工作,有效地进行过滤。)由于优先规则,您必须添加大括号
@arr1 = ([1,2,3], 4, 5, 6);
$arr_ref = $arr1[0];
@arr2 = @$arr_ref;
从
说到像@{$AoA[$i]}
[…]
这是因为Perl在其五个前缀解引用器(看起来像有人在咒骂:$
@
*
%
&
)上的优先级规则使它们比后缀的下标括号或大括号绑定得更紧
这意味着,如果不需要显式索引,那么就不需要{}
,例如在已经检索数组元素的代码中。例如,要展平包含arrayrefs的数组,请单击per的注释
@arr2 = @{$arr1[0]};
要仅检索arrayrefs的内容,可以在块内的三元运算符中使用:()
而不是:$。
。()
返回一个空列表,该列表在结果中变平,因此不会影响它。(当条件计算为false时,必须返回一些内容。此技巧允许map
执行grep
的工作,有效地进行过滤。)仅语法--{$arr1[0]}
仅语法--{$arr1[0]}
还有map
:@arr2=map{ref$\ueq“ARRAY”?@$\uu1代码>@Sobrique Nice,避免显式索引,因此没有优先级问题。这会让整个事情变得平淡,不是吗?(这是很有用的!)对于这个问题,也许是:()
而不是:$是的,它把它展平了()
可以工作,但它会丢弃该元素,这可能是所需的,也可能不是所需的代码>@Sobrique Nice,避免显式索引,因此没有优先级问题。这会让整个事情变得平淡,不是吗?(这是很有用的!)对于这个问题,也许是:()
而不是:$是的,它把它展平了<代码>()
可以工作,但它会丢弃该元素,这可能是所需的,也可能不是所需的。