※ 引述《godfat (godfat 真常)》之銘言:
之前有看到一個叫mixology的gem...
可以支援mixin與unmix...
用途應該跟你要的uninclude差不多?
gem install mixology
==
範例:
require 'mixology'
class A
end
module X
def hi
puts "hi"
end
end
a = A.new
a.mixin X
a.hi #=> 'hi'
a.unmix X
a.hi #=> undefine method
==
然後他還給了個拿來玩state pattern的範例...
class Door
def initialize(open = false)
@open = open
if open
mixin Open
else
mixin Closed
end
end
def closed?
kind_of? Closed
end
def opened?
kind_of? Open
end
end
module Closed
def open
unmix Closed
mixin Open
end
end
module Open
def close
unmix Open
mixin Closed
end
end
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.78.21