initialize
メソッドの引数のデフォルトを持つ Ruby オブジェクトを作成しています。
attr_accessor :one, :two, :three
def initialize(one: nil, two: nil, three: nil)
@one = one
@two = two
@three = three
end
ご覧のとおり、特に初期化可能な変数の数が増えるにつれて、これはあまり DRY ではありません。最終的には、各引数をループしてインスタンス変数 (splat 演算子と ? の組み合わせ) を割り当てることができるようにしたいと考えてinstance_variable_set
いますが、定義されていない場合は、期待されるインスタンス変数の定義済みリストをデフォルトで常に持っています。