tanakahdaのプログラマ手帳

プログラミングとかソフトウェア開発とかの備忘録

クラスとメソッドの定義

class TypicalClass
  NAME = 'typical' # クラス定数
  @@magic_value = 0x3092 #クラス変数

  # クラスメソッド
  def self.change_magic(x)
    @@magic_value ^= x
  end

  # オブジェクトの初期化メソッド
  def initialize(init_value)
    @value = init_value # インスタンスメソッド
  end
  attr_accessor :value # インスタンス変数にアクセッサを追加

  # インスタンスメソッド (アクセス修飾子なしの場合はpublic)
  def calc
    @value = magic
  end

  # このprivate以降に定義したメソッドはすべてprivateメソッドになる
  private
  def magic
    @value ^ @@magic_value
  end

  def hello # このメソッドもprivate
    $stdout.puts 'hello'
  end

end

実行:

# クラス定数を参照する場合は、「クラス名::定数名」
$stdout.puts TypicalClass::NAME # typical

c = TypicalClass.new(32)
$stdout.puts c.calc # 結果 : 12466

TypicalClass.change_magic 825
$stdout.puts c.calc # 結果 : 793

selfキーワード
現在実行中のオブジェクトを示す。
TypicalClassのClassオブジェクト自身のメソッド(=クラスメソッド)だと定義している。