Ruby
Rails
初心者
RubyOnRails
初心者向け

[初学者]破壊的なメソッドを簡単に説明してみた

目的

  • 初学者にとって「破壊的」という言葉が何なのか理解しづらいので簡単に説明を書いてみた

目次

  • 破壊的なメソッドとは
  • 感嘆符(!)が付いていない破壊的メソッド一覧

破壊的なメソッドとは

破壊的なメソッドとは、一言で言うと

  • 「レシーバーに変化を与えること」
  • 「オブジェクトの値を変更してしまうもの (値が更新されて保存) 」
irbで確認
# 変数を定義
a = 'kanemoto'

# 破壊的ではないメソッド
a.reverse      # aがレシーバ
=> "otomenak"  # reverseメソッドは逆から読まれる
# メソッド適用後,再度変数をみてみる
a
=> "kanemoto" # オブジェクトは初期のまま

-----------------------------------------------------------

# 破壊的なメソッド
a.reverse!     # 感嘆符(!)が付く場合が多いが、必ずしも付くわけではない。
=> "otomenak"  # reverseメソッドは逆から読まれる
# メソッド適用後,再度変数をみてみる
a
=> "otomenak"  # オブジェクトが更新されている

感嘆符(!)が付いていない破壊的メソッド一覧

Stringクラス
insert 文字列の中で第1引数の位置に別の第2引数の文字列を挿入
replace 文字列の内容を引数のもので置き換え
concat <<の別名。文字列の末尾に別の文字列を加えます
Arrayクラス
push 配列の末尾に引数を要素として追加
concat 配列の末尾に、引数の配列を結合
insert 第1引数で指定した位置に第2引数を要素として挿入
unshift 引数を配列の先頭に要素として追加
fill 配列のすべての要素を引数で置き換え
replace 配列の内容を引数のもので置き換え
delete_at 配列から引数の位置の要素を削除
delete_if 要素の数だけ繰り返しブロックを実行し、ブロックの戻り値が真になった要素を削除
delete 配列から引数と同じ要素を探して、すべて削除
clear 要素をすべて削除し、配列を空にします
shift 配列の最初の要素を削除し、その要素を返します
pop 配列の末尾の要素を削除し、その要素を返します
Hashクラス
delete ハッシュから引数と同じキーを探して、キーと値を削除
delete_if 繰り返しブロックを実行し、ブロックの戻り値が真になったキーと値を削除
replace ハッシュの内容を引数のもので置き換えます
shift ハッシュからキーと値を1組削除
update merge!の別名。2つのハッシュを統合
clear キーと値をすべて削除し、ハッシュを空にします