跳轉到內容

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
華夏公益教科書