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が必要)
そして本当はこんなコード書いちゃダメ。
戒めとして残しておく。