跳转到内容

Perl 编程/关键字/delete

来自维基教科书,自由的教科书
上一页: defined 关键字 下一页: DESTROY

Thedelete关键字

[编辑 | 编辑源代码]

Thedelete命令删除哈希的切片,如果EXPRESSION指定了哈希元素。删除后,exists() 不会再返回该元素/这些元素的真值。将哈希元素设置为undef 不会删除其键,但delete命令会删除。

如果在列表上下文中调用,它将返回被删除的值。返回列表的长度等于原始列表,其中undef代替了已删除的项。如果在标量上下文中调用,则返回最后一个被删除的值。

delete也可以用于数组和数组切片,但行为不那么直接。在这种情况下,虽然 exists() 对已删除的项也返回假值,但它们的索引永远不会改变。要使索引改变,必须使用 shift()()splice()

警告: 在数组值上调用 delete 已被弃用,并且可能会在将来的版本中删除。

  delete EXPRESSION
use 5.10.0;

%hash = (foo => 11, bar => 22, baz => 33);

for (($key, $element) = each %hash) {
  print "key => " . $key . " " . $element . "\n";
}

say 'delete $hash{foo}';
$scalar = delete $hash{foo}; # $scalar is 11

print $scalar . "\n";
$scalar = delete @hash{qw(foo bar)}; # $scalar is 22

print $scalar . "\n";
@array = delete @hash{qw(foo baz)}; # @array is (undef, 33)

say '@array = delete @hash{qw(foo baz)}';
for ($element = each @array) {
 print $element . "\n";
}
返回
key => bar 22
key => bar 22
delete $hash{foo}
11
22
@array = delete @hash{qw(foo baz)}
0

另请参阅

[编辑 | 编辑源代码]
上一页: defined 关键字 下一页: DESTROY
华夏公益教科书