为什么 perl autovivification 不适用于 ->@* 但 ->@[0] 可以?
Why perl autovivification does not work for ->@* but ->@[0] does?
我可能会通过切片获取值:
($x, $y, $z) = $hash->{ key }->@[0,1,2]
为什么我写不出来?
($x, $y, $z) = $hash->{ key }->@*
对于哈希中未定义 key
的情况下的第二个表达式,我得到错误:
Can't use an undefined value as an ARRAY reference at ...
切片为您指定的每个索引获取左值(可写标量);列表上下文数组取消引用不会生成任何左值。一般规则是 autovivification 仅适用于左值.
例如 ->@*
在这种情况下将自动激活:
push $hash->{ key }->@*, 1;
我可能会通过切片获取值:
($x, $y, $z) = $hash->{ key }->@[0,1,2]
为什么我写不出来?
($x, $y, $z) = $hash->{ key }->@*
对于哈希中未定义 key
的情况下的第二个表达式,我得到错误:
Can't use an undefined value as an ARRAY reference at ...
切片为您指定的每个索引获取左值(可写标量);列表上下文数组取消引用不会生成任何左值。一般规则是 autovivification 仅适用于左值.
例如 ->@*
在这种情况下将自动激活:
push $hash->{ key }->@*, 1;