Ruby

シングルトンクラスのインスタンスは作れない

Rubyならできると思ったんだけど。

class Sample; end

class << Sample
  def initialize; end
end

# Sample.singleton_class.new でも同じ
(class << Sample; self; end).new

# これでももちろんだめ
Sample.singleton_class.class_eval do |obj|
  obj.new
end

can't create instance of singleton class (TypeError) でエラー。頑張ったら相応のことはいけそうな気がするけど。

Note) ちなみにシングルトンクラスのサブクラスも作れない。仮に、サブクラスを作れるとしたら、そのクラスがシングルトンクラスかどうか見分けがつかず、インスタンスを作成することができてしまい、矛盾を発生してしまうからかも。

class Sample; end
Class.new(Sample.singleton_class) # can't make subclass of singleton class (TypeError)