有没有办法在ruby中指定不可扩展的类?

Ars*_*eed 2 ruby ruby-on-rails-4

因为我们使用“ final”关键字来声明Java中不可扩展的类。我们如何在红宝石中实现这一目标?有什么办法吗?

Ste*_*fan 5

假设您要防止子类化,则可以raiseinherited回调中产生异常:

class Foo
  def self.inherited(subclass)
    raise "Can't inherit Foo class"
  end
end

class Bar < Foo ; end
#=> RuntimeError (Can't inherit Foo class)
Run Code Online (Sandbox Code Playgroud)