特異メソッド

特定のインスタンスだけが実行できるメソッドを特異メソッド、というそうです。特異メソッド以外にも Ruby では"特異"という単語がよくでてくるような気がします。特異メソッドは英語では "Singleton Method"、と呼ばれるようです。

a = "hello"
b = a.dup

def a.to_s
  "The value is '#{self}'"
end

あるいは

class << a
  def to_s
    "The value is '#{self}'"
  end
end

と書けるとのこと。夢の中で見た謎の文法 "class << a" の謎が解けました。

使いどころはまだよく分かっていません。特定のインスタンスの動きをちょっとだけ変えたい、という時などでしょうか。a と b は同じインスタンスだけれども、a の動きだけちょっと変えたい、でも同じインタフェースでそれらは扱いたい、といったケースなど...。どういう場合にそれが発生するか、が問題です。

ちょっと今日は Ruby を勉強している時間があまりありません。残念です。