【Ruby】deleteメソッドの注意

内容

Rubyのdeleteメソッドについて

deleteメソッドの使用対象のクラスの型によって
定義上、返り値が変わってしまうことに注意です。

deleteメソッドは色々なクラスに対して定義されている

String#delete (Ruby 3.0.0 リファレンスマニュアル)
Array#delete (Ruby 3.0.0 リファレンスマニュアル)
Hash#delete(key) (Ruby 3.0.0 リファレンスマニュアル)

deleteメソッド(Ruby)の注意点

Rubyのdeleteメソッドは、使用対象のクラスによって
・削除する要素を返すか
・削除指定した要素を削除した後の残りを返すか
が異なります。

削除する要素を返す
# class_object : クラスのオブジェクト
# delete_target :  削除する要素

class_object.delete(delete_target) # => delete_target
# 削除された要素が返り値となる
削除指定した要素を削除した後の残りを返す
# class_object : クラスオブジェクト
# remain_object : deleteメソッドで削除指定した要素の残り
# delete_target : 削除する要素
# remain_object = class_object - delete_target

class_object.delete(delete_target) #=> remain_object
# 削除した後の残りが返り値となる

返り値の違い

使用対象のクラス 返り値
Stringクラス (String#delete) 削除指定した要素を削除した後の残り
Arrayクラス (Array#delete) 削除された要素
Hashクラス (Hash#delete(key)) 削除された要素
(削除指定したkeyに対するvalue)