カスタムセッターメソッドとゲッターメソッドを作成するためのRubyの標準的な方法は何でしょうか。通常、私はこれを経由attr_accessor
して行いますが、DSLを作成するコンテキストにいます。DSLでは、セッターは次のように呼び出されます(=
符号を使用するとローカル変数が作成されます)。
work do
duration 15
priority 5
end
したがって、次のように実装する必要があります。
def duration(dur)
@duration = dur
end
ただし、これにより、ゲッターの実装が少し難しくなります。同じ名前で引数のないメソッドを作成すると、セッターが上書きされるだけです。
そこで、設定と取得の両方を行うカスタムメソッドを作成しました。
def duration(dur=nil)
return @duration = dur if dur
return @duration if @duration
raise AttributeNotDefinedException, "Attribute '#{__method__}' hasn't been set"
end
これはそれについて行くのに良い方法ですか?テストケースの要点は次のとおりです。
ありがとう!