Rubyで、今まで2度ぐらいこんな感じの処理を書いてしまったことがある。
class Foo
attr_accessor :attr
def initialize
self.attr = 'default'
end
def func(arg = nil)
attr = arg.presence || attr
end
end
foo = Foo.new
puts foo.func('arg') # arg
puts foo.func # nil
最後の行のfoo.funcではargを渡していないので、defaultが出力されることを期待している。
attr = arg.presence || self.attr
こう書かないとダメ。(selfが必要)
そして本当はこんなコード書いちゃダメ。
戒めとして残しておく。