Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | BasicObject

概要

BasicObject

詳細

BasicObjectは特殊な用途のために意図的にほとんど何も定義されていないクラスです。
最低限のメソッドしか保持していないため、メタプログラミングを行う際などに
余計なメソッドと衝突して邪魔されたくないような場合に意図的に基底クラスとして利用します。

継承関係の確認

# encoding: utf-8
require "erb"

def println(value)
  print "#{value}\n"
end

class Hoge
end

module Hogeable
end

class ExtendHoge < Hoge
  include Hogeable
end

println BasicObject.ancestors
println Kernel.ancestors
println Object.ancestors
println Class.ancestors
println Hoge.ancestors
println ExtendHoge.ancestors

出力

[BasicObject]
[Kernel]
[Object, Kernel, BasicObject]
[Class, Module, Object, Kernel, BasicObject]
[Hoge, Object, Kernel, BasicObject]
[ExtendHoge, Hogeable, Hoge, Object, Kernel, BasicObject]