はじめに
自作で破壊的メソッドを作ってみたので備忘録として残しておきます。
破壊的メソッドとは
結論から言うと、インスタンス自身の内容を変えてしまうものを破壊的メソッドと呼びます。
非破壊的メソッド「reject」
array = [1,2,3]
p array.reject {|item| item == 2} #=> [1, 3]
p array #=> [1, 2, 3]
破壊的メソッド「delete」
array = [1,2,3]
p array.delete(2) #=> [1, 3]
p array #=> [1, 3]
上記の例では「非破壊的メソッド」であるArrary#rejectを用いた場合にはarrayそのものの値は変更していないが、「破壊的メソッド」であるArray#deleteを用いた場合にはarrayそのものの値が変更されている事がわかるとおもいます。
##作ってみる
たとえば文字列の先頭に「foo」を付け足す破壊的メソッド「foo!」を定義する場合以下のようになります。
class String
def foo!
self.replace("foo" + self)
end
end
たったこれだけですが、以上を参考にいろいろな破壊的メソッドを作れそうです。
参考