パンくず
Ruby Cookbook
Immutable MethodとDestroy Method
概要
Immutable MethodとDestroy Method
Immutable MethodとDestroy Method
Immutable Method=不変なメソッド
Destroy Method=破壊的なメソッド
前者はオブジェクトの値を変えない。
後者はオブジェクトの値を変えます。
サンプル
hoge = "hoge?" puts hoge.chop # => immutableなメソッドで最後の一文字を除去 puts hoge # => オブジェクトに変更が加わっていない puts hoge.chop! # => destroyなメソッドで最後の一文字を除去 puts hoge # => オブジェクトに変更が加わっている puts "---------------------------------------------" # 自作クラスに破壊的なメソッドを実装 class Hoge attr_accessor:hoge def initialize(hoge);@hoge=hoge;end def replace_o_to_a;return @hoge.gsub('o','a');end def replace_o_to_a!;return @hoge = @hoge.gsub('o','a');end end hoge = Hoge.new("hoge") puts hoge.replace_o_to_a # => immutableなメソッドでoをaに置換 puts hoge.hoge # => オブジェクトに変更が加わっていない puts hoge.replace_o_to_a! # => destroyなメソッドでoをaに置換 puts hoge.hoge # => オブジェクトに変更が加わっている
出力
hoge hoge? hoge hoge --------------------------------------------- hage hoge hage hage