やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

組込ライブラリ(Class)

 Classクラス。

成果物

情報源

Class

クラスのクラスです。

 ClassクラスはModuleクラスを継承したサブクラスである。

より正確に言えば、個々のクラスはそれぞれメタクラスと呼ばれる名前のないクラスをクラスとして持っていて、Class はそのメタクラスのクラスです。この関係は少し複雑ですが、Ruby を利用するにあたっては特に重要ではありません。

クラスとモジュールには

  • クラスはインスタンスを作成できるが、モジュールはできない。
  • モジュールを他のモジュールやクラスにインクルードすることはできるが,クラスをインクルードすることはできない。

という違いがありますが、それ以外のほとんどの機能は Module から継承されています。Module のメソッドのうち

は Class では未定義にされています。

 ついに明らかになったClassとModuleの関係と違い。まあコード例から察することができたけども。

メンバ抜粋

特異メソッド

new

インスタンスメソッド

_load allocate new superclass

privateメソッド

inherited

new

k = Class.new{|c|
  def initialize
    p "in initialize"
  end

  def hoge
    p "hoge hoge hoge"
  end
}
o = k.new              #=> "in initialize"
o.hoge                 #=> "hoge hoge hoge"

 まあどう考えても以下のようにしたほうが見やすいし短く書けて良いと思うが。

class C
  def initialize
    p "in initialize"
  end

  def hoge
    p "hoge hoge hoge"
  end
end
c = C.new
c.hoge

対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux