2

我可以通过切片获得值:

($x, $y, $z) =  $hash->{ key }->@[0,1,2]

为什么我不能写?

($x, $y, $z) =  $hash->{ key }->@*

对于未在哈希中定义的情况下的第二个表达式,key我得到错误:

不能在 ... 处使用未定义的值作为 ARRAY 引用

4

1 回答 1

5

切片为您指定每个索引的左值(可写标量);列表上下文数组取消引用不会产生任何左值。一般规则是自动生存仅适用于 lvalues

例如->@*在这种情况下会自动激活:

push $hash->{ key }->@*, 1;
于 2017-11-03T16:50:24.267 回答