'Module#prepend'-ruby-spec-memo

ruby2.0仕様メモ「Module#prepend」

ruby2.0より、mix-inした場合、module にて class 側の関数をオーバライドすることができる Module#prepend キーワードが実装された。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module Fuga
  def abc=(value)
    raise ArgumentError unless value
    @abc = value
  end
end

class Hoge
  prepend Fuga
  attr_accessor :abc
end

> hoge = Hoge.new
=> #<Hoge:0x0000000354b9d0>
> hoge.abc
=> nil
> hoge.abc = 123
=> 123
> hoge.abc = nil
ArgumentError: ArgumentError