Perl 程式設計/關鍵字/delete
外觀
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