Ошибка наследования, когда к имени класса добавляется префикс имени модуля - PullRequest
0 голосов
/ 19 октября 2018

У меня действительно странная проблема с наследованием внутри модуля.Вот мой код:

module MyModule
    class MyModule.ErrorClass < StandardError

    end
end

Когда я запускаю его, я получаю эту ошибку:

myfile.rb:2: syntax error, unexpected '<', expecting &. or :: or '[' or '.'
        class MyModule.ErrorClass < StandardError
                               ^
myfile.rb:5: syntax error, unexpected keyword_end, expecting end-of-input

Однако, когда я изменяю это на:

module MyModule
    class ErrorClass < StandardError

    end
end

работает нормально, без ошибок.

1 Ответ

0 голосов
/ 19 октября 2018

Нет необходимости повторять имя модуля, как вы делали в первом примере.И, кроме того, использование . вместо :: для отделения имени модуля от имени класса недопустимо в Ruby.

Просто используйте

module MyModule
  class ErrorClass < StandardError
    # ...
  end
end

или

class MyModule::ErrorClass < StandardError # note the colons
  # ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...