Rubyでは||=
が出来るので、当然&&=
も出来るよね
と言うことで実験してみました。
class Hoge
def initialize
@a = 0
end
def a=(i)
@a &&= i
end
def a
@a
end
end
で、
num = Hoge.new
num.a = 1
p num.a
#=> 1
num.a = 2
p num.a
#=> 2
num.a = nil
p num.a
#=> nil
num.a = 3
p num.a
#=> nil
これだけだとちょっと用途が思いつきませんが、代入メソッドの中にバリデーションのロジックなんかを仕込むと使い道があるかも。