読者です 読者をやめる 読者になる 読者になる

ruby

ruby 1.8.7で1.9のBasicObjectを再現したみたいとおもって、次のようなコードを書いて実行した。

Prototype = Object.clone

p Prototype.instance_methods # -> ["inspect", "tap", "clone", ...]

BASIC_METHODS = %w(== equal? ! != instance_eval instance_exec __send__).map do |method|
	method.intern
end

Prototype.instance_eval do
	undef_method *instance_methods.reject do |method|
		::BASIC_METHODS.include?(method)
	end
end

p Prototype.instance_methods
# => warning: undefining `__send__' may cause serious problem
# => warning: undefining `__id__' may cause serious problem
# -> []

なんと、すべてのインスタンスメソッドが削除されてしまった。