Есть ли способ указать класс не расширяемый в ruby? - PullRequest
2 голосов
/ 23 мая 2019

, поскольку мы используем ключевое слово "final" для объявления класса, не расширяемого в Java. Как нам этого добиться в рубине? есть ли способ?

1 Ответ

5 голосов
/ 23 мая 2019

Предполагая, что вы хотите предотвратить создание подклассов, вы можете raise исключение из обратного вызова inherited:

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

class Bar < Foo ; end
#=> RuntimeError (Can't inherit Foo class)
...